[{"data":1,"prerenderedAt":34195},["ShallowReactive",2],{"docs-nav":3,"content-\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fintegrate-ai":1552,"content-doc-\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fintegrate-ai-inline":1552,"search-dialog-corpus":1660,"search-dialog-default-links":26587,"pinned-blogs":27655,"doc-nav-siblings:%2Fdocs%2Fno-code-tool%2Freference%2Fsteps%2Fintegrate-ai":27656,"hero-media-\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fintegrate-ai":34133},[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":309,"body":1554,"date":1651,"description":1652,"extension":1653,"meta":1654,"navigation":1657,"order":1651,"path":1059,"seo":1658,"stem":1060,"__hash__":1659},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fintegrate-ai.md",{"type":1555,"value":1556,"toc":1639},"minimark",[1557,1561,1566,1569,1573,1576,1598,1604,1608,1610,1615,1618,1622,1625,1629,1632,1636],[1558,1559],"hero-media",{"video":1560},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1503&end=1560?rel=0",[1562,1563,1565],"h2",{"id":1564},"what-to-use-the-integrate-ai-step-for","What to use the Integrate AI step for",[1567,1568],"hr",{},[1570,1571,1572],"p",{},"Add AI into your automation using this step to extract data, generate text, and make decisions as part of your workflow. You can connect to providers like ChatGPT, Claude, Gemini and Sonar using your own API keys, allowing you to handle unstructured data and add flexible, intelligent logic without writing code.",[1570,1574,1575],{},"You can use this step to:",[1577,1578,1579,1583,1586,1589,1592],"ul",{},[1580,1581,1582],"li",{},"Scrape unstructured data from html with AI",[1580,1584,1585],{},"Extract details from LinkedIn profile data",[1580,1587,1588],{},"Customise DM messages",[1580,1590,1591],{},"Use as part of a larger Axiom that scrapes and responds to comments",[1580,1593,1594,1595],{},"Extract data from an ",[1596,1597,161],"a",{"href":1111},[1570,1599,1600,1601],{},"If you have an idea for a different AI feature? let us know we can ",[1596,1602,1603],{"href":82},"add it.",[1562,1605,1607],{"id":1606},"how-to-configure-the-integrate-ai-step","How to configure the  Integrate AI step",[1567,1609],{},[1611,1612,1614],"h3",{"id":1613},"function","Function",[1570,1616,1617],{},"Select extract data or generate data to set the step AI function.",[1611,1619,1621],{"id":1620},"llm","LLM",[1570,1623,1624],{},"Select the model of LLM you wish to use.",[1611,1626,1628],{"id":1627},"api-key","API key",[1570,1630,1631],{},"Enter your API key here.",[1611,1633,1635],{"id":1634},"prompt","Prompt",[1570,1637,1638],{},"Enter your prompt this can be combined with data from other steps by clicking \"insert data\".",{"title":1640,"searchDepth":1641,"depth":1641,"links":1642},"",3,[1643,1645],{"id":1564,"depth":1644,"text":1565},2,{"id":1606,"depth":1644,"text":1607,"children":1646},[1647,1648,1649,1650],{"id":1613,"depth":1641,"text":1614},{"id":1620,"depth":1641,"text":1621},{"id":1627,"depth":1641,"text":1628},{"id":1634,"depth":1641,"text":1635},null,"Interact with LLMs to extract data, generate text or make decisions. Supports either ChatGPT, Claude and others, requires an API key.","md",{"category":1655,"icon":1656},"AI","WidgetAI.svg",true,{"title":309,"description":1652},"pUVjX_SM8pzHJryqr8WOTNWoBBWBOhDRuObJFMgz9y4",[1661,2164,2472,2696,2955,3170,3392,3861,4982,5643,6530,6743,7439,7754,8169,8631,8912,9129,9250,9469,9703,9909,10334,10533,10859,11392,11688,11804,12085,12253,12387,12759,13115,13403,13697,14266,14336,14603,14868,15117,15321,15819,15966,16140,16229,16526,16822,17407,17722,18008,18027,19741,19932,20219,20536,20832,21144,21416,21683,21787,21993,22270,22661,23948,24325,24557,24818,25009,25026,25309,25826,25843,26122,26306],{"id":1662,"title":1663,"body":1664,"date":2144,"description":2145,"extension":1653,"meta":2146,"navigation":1657,"order":1651,"path":2160,"seo":2161,"stem":2162,"__hash__":2163},"guides\u002Fguides\u002Fai-proofreading.md","Build an AI Proofreading Assistant for any Website",{"type":1555,"value":1665,"toc":2136},[1666,1668,1671,1673,1677,1697,1701,1712,1718,1721,1725,1728,1954,1958,1961,1965,1973,1976,1979,2125],[1567,1667],{},[1570,1669,1670],{},"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,1672],{},[1562,1674,1676],{"id":1675},"get-started-create-your-google-sheet","Get started: create your Google Sheet",[1570,1678,1679,1680,1684,1685,1688,1689,1692,1693,1696],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut ",[1681,1682,1683],"strong",{},"\"sheet.new\""," into the address bar, assuming you already have an account. Name your sheet something like ",[1681,1686,1687],{},"\"ChatGPT AI Proofreader\""," and set up a tab called ",[1681,1690,1691],{},"\"Links\"",". Add another tab called ",[1681,1694,1695],{},"\"Data\"",".",[1562,1698,1700],{"id":1699},"install-the-ai-proofreading-template","Install the AI Proofreading template",[1570,1702,1703,1704,1707,1708,1711],{},"To install this AI Proofreading template, click ",[1681,1705,1706],{},"\"Install template\"",". If you’re a new user, you’ll have to click ",[1681,1709,1710],{},"\"Install Chrome extension\""," and create a free axiom.ai account before you can edit the template.",[1570,1713,1714,1715,1696],{},"Once installed, click ",[1681,1716,1717],{},"\"Start\"",[1570,1719,1720],{},"axiom.ai will guide you through the steps you need to configure in the app.",[1562,1722,1724],{"id":1723},"configure-your-ai-proofreading-assistant-in-7-easy-steps","Configure your AI Proofreading Assistant in 7 easy steps",[1570,1726,1727],{},"Please note in step 2.2, you need to select a single block of content with the selector tool.",[1729,1730,1731],"guide",{},[1577,1732,1733,1757],{},[1580,1734,1735,1738,1739,1743],{},[1681,1736,1737],{},"1.0"," ",[1740,1741,1742],"code",{},"Read data from a Google Sheet",[1577,1744,1745,1751],{},[1580,1746,1747,1750],{},[1740,1748,1749],{},"Spreadsheet",": Search for the Google Sheet you created. Once found, click to select.",[1580,1752,1753,1756],{},[1740,1754,1755],{},"Sheet name",": Choose the sheet tab called 'Amazon product links'.",[1580,1758,1759,1738,1762,1764],{},[1681,1760,1761],{},"2.0",[1740,1763,667],{},[1577,1765,1766,1789,1814,1856,1884,1921],{},[1580,1767,1768,1738,1771,1773],{},[1681,1769,1770],{},"2.1",[1740,1772,1043],{},[1577,1774,1775],{},[1580,1776,1777,1780,1781,1784,1785,1788],{},[1740,1778,1779],{},"Enter URL",": Click ",[1740,1782,1783],{},"Insert Data",", select ",[1740,1786,1787],{},"google-sheet-data",", and select the column with the links in.",[1580,1790,1791,1738,1794,1797],{},[1681,1792,1793],{},"2.2",[1740,1795,1796],{},"Get data from bot's current page",[1577,1798,1799,1805],{},[1580,1800,1801,1804],{},[1740,1802,1803],{},"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.",[1580,1806,1807,1810,1811,1696],{},[1740,1808,1809],{},"Max Results",": Set to ",[1740,1812,1813],{},"1",[1580,1815,1816,1738,1819,1822],{},[1681,1817,1818],{},"2.3",[1740,1820,1821],{},"Generate text with ChatGPT",[1577,1823,1824,1830,1847],{},[1580,1825,1826,1829],{},[1740,1827,1828],{},"ChatGPT API key",": Enter your API key.",[1580,1831,1832,1834,1835,1838,1839,1842,1843,1846],{},[1740,1833,1635],{},": Insert the text ",[1740,1836,1837],{},"\"Check this text for spelling mistakes and grammar, return in bullet list compatible with spreadsheet cell -\""," then click ",[1740,1840,1841],{},"Insert data"," followed by ",[1740,1844,1845],{},"[scrape-data]"," to add the scraped data to check.",[1580,1848,1849,1852,1853,1696],{},[1740,1850,1851],{},"Extract values",": Insert the values you want to extract, separated by a comma — for example: ",[1740,1854,1855],{},"name, email, job title",[1580,1857,1858,1738,1861,1864],{},[1681,1859,1860],{},"2.4",[1740,1862,1863],{},"Append or Merge Data",[1577,1865,1866,1876],{},[1580,1867,1868,1871,1872,1875],{},[1740,1869,1870],{},"Data A",": Insert ",[1740,1873,1874],{},"[google-sheet-data]"," and select the column containing the URL.",[1580,1877,1878,1871,1881,1696],{},[1740,1879,1880],{},"Data B",[1740,1882,1883],{},"[chatgpt-output]",[1580,1885,1886,1738,1889,1892],{},[1681,1887,1888],{},"2.5",[1740,1890,1891],{},"Write Data to a Google Sheet",[1577,1893,1894,1898,1903,1912],{},[1580,1895,1896,1750],{},[1740,1897,1749],{},[1580,1899,1900,1902],{},[1740,1901,1755],{},": Choose the tab you created.",[1580,1904,1905,1908,1909,1696],{},[1740,1906,1907],{},"DATA",": Select ",[1740,1910,1911],{},"[appended-data]",[1580,1913,1914,1917,1918,1696],{},[1740,1915,1916],{},"Clear data before writing | Add to existing data",": Set this option to ",[1740,1919,1920],{},"\"Add to existing\"",[1580,1922,1923,1738,1926,1929],{},[1681,1924,1925],{},"2.6",[1740,1927,1928],{},"Delete rows from a Google Sheet",[1577,1930,1931,1935,1940,1947],{},[1580,1932,1933,1750],{},[1740,1934,1749],{},[1580,1936,1937,1939],{},[1740,1938,1755],{},": Choose the tab you created for links.",[1580,1941,1942,1810,1945,1696],{},[1740,1943,1944],{},"First row",[1740,1946,1813],{},[1580,1948,1949,1810,1952,1696],{},[1740,1950,1951],{},"Last row",[1740,1953,1813],{},[1562,1955,1957],{"id":1956},"testing-and-running-your-ai-proofreader","Testing and running your AI proofreader",[1570,1959,1960],{},"We suggest running a test first, stopping the bot after a few loops, and reviewing the data.",[1562,1962,1964],{"id":1963},"customize-your-template","Customize your template",[1570,1966,1967,1968,1972],{},"Like all Axiom ",[1596,1969,1971],{"href":1970},"\u002Fguides","templates",", you can use our no-code bot builder to customize any bot according to your requirements.",[1562,1974,1398],{"id":1975},"troubleshooting",[1570,1977,1978],{},"We recommend you watch the video to troubleshoot.",[1729,1980,1981],{},[1577,1982,1983,2004,2015,2030,2048,2059,2078,2099,2113],{},[1580,1984,1985,1988,1991,1992,1995,1996,1999,2000,2003],{},[1681,1986,1987],{},"Want to set an amount of loops?",[1989,1990],"br",{},"\nIn ",[1740,1993,1994],{},"Step 1.0",", set a ",[1740,1997,1998],{},"Last Cell"," — something like ",[1740,2001,2002],{},"AE50"," will scrape 50 rows.",[1580,2005,2006,2009,1991,2011,2014],{},[1681,2007,2008],{},"Selectors fail to find content?",[1989,2010],{},[1740,2012,2013],{},"Step 2.2 – Get data from bot's current page",", select a single block of content with the selector tool.",[1580,2016,2017,2020,2022,2023,2026,2027,1696],{},[1681,2018,2019],{},"Want to select all content on any website?",[1989,2021],{},"\nIn the same step, use a ",[1596,2024,2025],{"href":1383},"custom selector"," — try ",[1740,2028,2029],{},"body",[1580,2031,2032,2035,2037,2038,2041,2042,2045,2046,1696],{},[1681,2033,2034],{},"Slow running scrape?",[1989,2036],{},"\nIn the same step, toggle ",[1740,2039,2040],{},"Configure scraper",", then set ",[1740,2043,2044],{},"No. of retry..."," to ",[1740,2047,1813],{},[1580,2049,2050,2053,1991,2055,2058],{},[1681,2051,2052],{},"ChatGPT step not working?",[1989,2054],{},[1740,2056,2057],{},"Step 2.3 – Generate text with ChatGPT",", make sure you’ve entered your ChatGPT API key.",[1580,2060,2061,2064,2066,2067,2069,2070,2072,2075,2077],{},[1681,2062,2063],{},"Want better results from ChatGPT?",[1989,2065],{},"\nIn the same step, set the ",[1740,2068,1635],{}," to something like:",[1989,2071],{},[1740,2073,2074],{},"\"Check this text for spelling mistakes and grammar, return in bullet list compatible with spreadsheet cell - [scrape-data]\".",[1989,2076],{},"\nTweak the wording to fine-tune results.",[1580,2079,2080,2083,1991,2085,2088,2089,2091,2092,2094,2095,2091,2097,1696],{},[1681,2081,2082],{},"Wrong data written to sheet?",[1989,2084],{},[1740,2086,2087],{},"Step 2.5 – Write Data to a Google Sheet",", check that ",[1740,2090,1870],{}," is ",[1740,2093,1874],{}," and ",[1740,2096,1880],{},[1740,2098,1883],{},[1580,2100,2101,2104,2106,2107,2110,2111,1696],{},[1681,2102,2103],{},"No data written?",[1989,2105],{},"\nIn the same step, check that ",[1740,2108,2109],{},"Data"," is set to ",[1740,2112,1911],{},[1580,2114,2115,2118,2120,2121,2124],{},[1681,2116,2117],{},"Keeps overwriting data?",[1989,2119],{},"\nMake sure ",[1740,2122,2123],{},"Add to existing"," is selected in the same step.",[1570,2126,2127,2128,2131,2132],{},"We offer excellent customer support. If you need help, ",[1596,2129,2130],{"href":82},"get in touch."," You could also read this full guide on how to do ",[1596,2133,2135],{"href":2134},"\u002Fblog\u002Fchatgpt-web-scraping","ChatGPT web scraping.",{"title":1640,"searchDepth":1641,"depth":1641,"links":2137},[2138,2139,2140,2141,2142,2143],{"id":1675,"depth":1644,"text":1676},{"id":1699,"depth":1644,"text":1700},{"id":1723,"depth":1644,"text":1724},{"id":1956,"depth":1644,"text":1957},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":2147,"read":2148,"level":2149,"video":2150,"templateId":2151,"type":2152,"format":2153,"intent_type":2154,"intent":2155,"tags":2156,"platfrom":2159},"\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",[2157,2158],"ai","scraping",[739],"\u002Fguides\u002Fai-proofreading",{"title":1663,"description":2145},"guides\u002Fai-proofreading","4pDvas5NqHibFUtuqv8Ow70UgUxrUGHugw1LHQ1ei1Y",{"id":2165,"title":2166,"body":2167,"date":1651,"description":2459,"extension":1653,"meta":2460,"navigation":1657,"order":1651,"path":2468,"seo":2469,"stem":2470,"__hash__":2471},"guides\u002Fguides\u002Fapple-shortcuts.md","How to use Apple Shortcuts to trigger an axiom.ai automation",{"type":1555,"value":2168,"toc":2448},[2169,2171,2174,2177,2179,2183,2185,2188,2217,2221,2223,2226,2231,2269,2273,2277,2279,2282,2310,2314,2316,2319,2340,2343,2347,2349,2352,2376,2380,2382,2385,2388,2407,2411,2413,2420,2427,2431,2433,2436,2438,2444],[1567,2170],{},[1570,2172,2173],{},"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.",[1570,2175,2176],{},"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,2178],{},[1562,2180,2182],{"id":2181},"getting-started","Getting started",[1567,2184],{},[1570,2186,2187],{},"To get started, you will need the following from the axiom.ai Chrome extension:",[1729,2189,2190],{},[2191,2192,2193,2202,2208],"ol",{},[1580,2194,2195,2197,2198,1696],{},[1681,2196,1628],{},": The API key is found on the ",[1596,2199,2201],{"href":2200},"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fkeys","dashboard",[1580,2203,2204,2207],{},[1681,2205,2206],{},"Automation name",": Get the name of the automation you wish to trigger.",[1580,2209,2210,2213,2214,1696],{},[1681,2211,2212],{},"Endpoint",": The current endpoint is ",[1740,2215,2216],{},"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger",[1562,2218,2220],{"id":2219},"trigger-an-axiomai-automation-with-apple-shortcuts","Trigger an axiom.ai automation with Apple Shortcuts",[1567,2222],{},[1570,2224,2225],{},"Open the Apple Shortcuts application on your iPhone, iPad, or Mac.",[2227,2228],"img",{"src":2229,"alt":2230},"\u002Fdocs\u002Fguides\u002Fapple-shortcuts-get-contents.jpg","open apple Shortcuts in apple mac app folder",[1729,2232,2233],{},[2191,2234,2235,2241,2251,2263],{},[1580,2236,2237,2240],{},[1681,2238,2239],{},"Create shortcut",": Tap the \"+\" icon to create a new Shortcut.",[1580,2242,2243,2246,2247,2250],{},[1681,2244,2245],{},"Add step",": Add a ",[1681,2248,2249],{},"get contents from URL"," action, set the URL to the axiom.ai endpoint from above.",[1580,2252,2253,2256,2257,2045,2260,1696],{},[1681,2254,2255],{},"Configure",": Change the ",[1681,2258,2259],{},"method",[1681,2261,2262],{},"POST",[1580,2264,2265,2268],{},[1681,2266,2267],{},"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.",[2227,2270],{"src":2271,"alt":2272},"\u002Fdocs\u002Fguides\u002Fapple-shortcuts-get-contents-config-2.jpg","using Google App Script API request to trigger axiom.ai bot run",[1611,2274,2276],{"id":2275},"set-up-the-apple-shortcut-to-open-the-browser","Set up the Apple Shortcut to open the browser",[1567,2278],{},[1570,2280,2281],{},"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.",[1729,2283,2284],{},[2191,2285,2286,2298,2304],{},[1580,2287,2288,2246,2291,2294,2295,2297],{},[1681,2289,2290],{},"Get dictionary value",[1681,2292,2293],{},"get dictionary value"," action below the ",[1681,2296,2249],{}," action. This action converts the JSON response into a dictionary so you can work with its contents.",[1580,2299,2300,2303],{},[1681,2301,2302],{},"Get value for key",": In the \"key\" field, type \"OPEN LINK IN BROWSER\" (case sensitive).",[1580,2305,2306,2309],{},[1681,2307,2308],{},"Open URLs",": Set the value to \"dictionary value\".",[1611,2311,2313],{"id":2312},"trigger-a-bot-run-from-your-mac-dock","Trigger a bot run from your Mac dock",[1567,2315],{},[1570,2317,2318],{},"Your Apple Shortcut can be added to your macOS dock, allowing you easy access to your triggers with a single click.",[1729,2320,2321],{},[2191,2322,2323,2330,2333],{},[1580,2324,2325,2326,2329],{},"Open the ",[1681,2327,2328],{},"\"Shortcuts app\""," on your Mac.",[1580,2331,2332],{},"Right-click (or Control-click) on the shortcut you want to add to the Dock.",[1580,2334,2335,2336,2339],{},"Select ",[1681,2337,2338],{},"\"Add to Dock\""," from the context menu.",[2227,2341],{"src":2342,"alt":2272},"\u002Fdocs\u002Fguides\u002Fmac-dock.jpg",[1611,2344,2346],{"id":2345},"trigger-a-bot-run-from-the-command-line","Trigger a bot run from the command line",[1567,2348],{},[1570,2350,2351],{},"Apple developers have made it possible to trigger Apple Shortcuts from the command line. Open the Terminal and type the following command:",[2353,2354,2358],"pre",{"className":2355,"code":2356,"language":2357,"meta":1640,"style":1640},"language-bash shiki shiki-themes github-light-default github-dark-default","shortcuts run \"My bot's name\"\n","bash",[1740,2359,2360],{"__ignoreMap":1640},[2361,2362,2365,2369,2373],"span",{"class":2363,"line":2364},"line",1,[2361,2366,2368],{"class":2367},"sTDnQ","shortcuts",[2361,2370,2372],{"class":2371},"sSVrQ"," run",[2361,2374,2375],{"class":2371}," \"My bot's name\"\n",[1611,2377,2379],{"id":2378},"trigger-bot-runs-with-siri","Trigger bot runs with Siri",[1567,2381],{},[1570,2383,2384],{},"You can trigger your Shortcuts using Siri, which means you can run your bot tasks in the axiom.ai cloud using voice commands.",[1570,2386,2387],{},"The following prompt will allow you to run your Shortcut, which will trigger your axiom.ai automation:",[2353,2389,2393],{"className":2390,"code":2391,"language":2392,"meta":1640,"style":1640},"language-js shiki shiki-themes github-light-default github-dark-default","\"Hi Siri, run shortcut\" then \"Name of shortcut\"\n","js",[1740,2394,2395],{"__ignoreMap":1640},[2361,2396,2397,2400,2404],{"class":2363,"line":2364},[2361,2398,2399],{"class":2371},"\"Hi Siri, run shortcut\"",[2361,2401,2403],{"class":2402},"s4rv2"," then ",[2361,2405,2406],{"class":2371},"\"Name of shortcut\"\n",[1562,2408,2410],{"id":2409},"testing-your-workflow","Testing your workflow",[1567,2412],{},[1570,2414,2415,2416,2419],{},"Test the shortcut by tapping ",[1681,2417,2418],{},"run",". Apple Shortcuts will display any error messages and you should follow these for more information.",[1570,2421,2422,2423,1696],{},"If your automation is triggered successfully but the automation has run into an error, you will find these in your ",[1596,2424,2426],{"href":2425},"\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Fhow-to-debug#run-reports","run reports",[1562,2428,2430],{"id":2429},"wrapping-up","Wrapping up",[1567,2432],{},[1570,2434,2435],{},"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!",[1567,2437],{},[1570,2439,2440],{},[2441,2442,2443],"em",{},"Information valid as of 29th October 2024, tested on iOS18, iPadOS18, macOS15.",[2445,2446,2447],"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":1640,"searchDepth":1641,"depth":1641,"links":2449},[2450,2451,2457,2458],{"id":2181,"depth":1644,"text":2182},{"id":2219,"depth":1644,"text":2220,"children":2452},[2453,2454,2455,2456],{"id":2275,"depth":1641,"text":2276},{"id":2312,"depth":1641,"text":2313},{"id":2345,"depth":1641,"text":2346},{"id":2378,"depth":1641,"text":2379},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":2462,"platfrom":2465,"video":2467},"Move data between apps",[2463,2464],"api","trigger",[2466],"Mac","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FwE3PZCeivAI?rel=0&amp;","\u002Fguides\u002Fapple-shortcuts",{"title":2166,"description":2459},"guides\u002Fapple-shortcuts","jucW4uOTjSAvYiU8YOf-98E6nDmLA_9J5sMRpkz-0KA",{"id":2473,"title":2474,"body":2475,"date":2676,"description":2677,"extension":1653,"meta":2678,"navigation":1657,"order":1651,"path":2692,"seo":2693,"stem":2694,"__hash__":2695},"guides\u002Fguides\u002Fautomate-facebook-messages.md","How to automate messages on Facebook",{"type":1555,"value":2476,"toc":2668},[2477,2479,2482,2484,2488,2495,2499,2508,2511,2513,2517,2618,2622,2628,2630,2638,2640,2645,2664],[1567,2478],{},[1570,2480,2481],{},"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,2483],{},[1562,2485,2487],{"id":2486},"get-started-set-up-your-google-sheet","Get started: Set up your Google Sheet",[1570,2489,2490,2491,2494],{},"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 ",[1681,2492,2493],{},"\"Facebook Messenger bot\"",".. Set up a tab with profile links to message.",[1562,2496,2498],{"id":2497},"install-the-facebook-messenger-bot","Install the Facebook Messenger bot",[1570,2500,2501,2502,2504,2505,2507],{},"To install this Facebook Messenger bot, click ",[1681,2503,1706],{},".. If you’re a new user, you’ll have to click ",[1681,2506,1710],{},"., then create a free axiom.ai account to edit the template.",[1570,2509,2510],{},"Once installed, click 'Start'.",[1570,2512,1720],{},[1562,2514,2516],{"id":2515},"configure-your-facebook-messenger-bot-in-four-easy-steps","Configure your Facebook Messenger bot in four easy steps",[1729,2518,2519,2615],{},[1577,2520,2521,2538],{},[1580,2522,2523,1738,2525,2527],{},[1681,2524,1994],{},[1740,2526,1742],{},[1577,2528,2529,2533],{},[1580,2530,2531,1750],{},[1740,2532,1749],{},[1580,2534,2535,2537],{},[1740,2536,1755],{},": Choose the tab with the Facebook profile links.",[1580,2539,2540,1738,2543,2545],{},[1681,2541,2542],{},"Step 2.0",[1740,2544,667],{},[1577,2546,2547,2565,2573,2589,2597],{},[1580,2548,2549,1738,2552,2555],{},[1681,2550,2551],{},"Step 2.1",[1740,2553,2554],{},"Go to page: Profile page",[1577,2556,2557],{},[1580,2558,2559,2561,2562,2564],{},[1740,2560,1779],{},": Click 'Insert data', choose ",[1740,2563,1787],{},", and select the column with Facebook profile links.",[1580,2566,2567,1738,2570],{},[1681,2568,2569],{},"Step 2.2",[1740,2571,2572],{},"Click Element: Message^",[1580,2574,2575,1738,2578,2581],{},[1681,2576,2577],{},"Step 2.3",[1740,2579,2580],{},"Enter Text: Message",[1577,2582,2583],{},[1580,2584,2585,2588],{},[1740,2586,2587],{},"Text",": Input the message to be sent.",[1580,2590,2591,1738,2594],{},[1681,2592,2593],{},"Step 2.4",[1740,2595,2596],{},"Press Key(s): Send message^",[1580,2598,2599,1738,2602,2604],{},[1681,2600,2601],{},"Step 2.5",[1740,2603,1928],{},[1577,2605,2606,2610],{},[1580,2607,2608,1750],{},[1740,2609,1749],{},[1580,2611,2612,2614],{},[1740,2613,1755],{},": Choose the tab with Facebook links.",[1570,2616,2617],{},"^ Preconfigured",[1562,2619,2621],{"id":2620},"run-your-facebook-messenger-bot","Run your Facebook Messenger bot",[1570,2623,2624,2625,1696],{},"To test this Facebook Messenger bot, disable step 2.2 to prevent messages being sent.\nIf you wish to schedule the bot ",[1596,2626,2627],{"href":638},"add steps to login",[1562,2629,1964],{"id":1963},[1570,2631,1967,2632,2634,2635,1696],{},[1596,2633,1971],{"href":1970},", 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 ",[1681,2636,2637],{},"\"Insert data\"",[1562,2639,1398],{"id":1975},[1570,2641,2642,2643,1696],{},"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 ",[1596,2644,2627],{"href":638},[1729,2646,2647],{},[1577,2648,2649,2658],{},[1580,2650,2651,2654,2655,2657],{},[1681,2652,2653],{},"Message button not clicked?"," Click ",[1740,2656,1803],{}," and reselect the button.",[1580,2659,2660,2663],{},[1681,2661,2662],{},"Message not being sent?"," Try re-recording the Return key action.",[1570,2665,2127,2666],{},[1596,2667,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":2669},[2670,2671,2672,2673,2674,2675],{"id":2486,"depth":1644,"text":2487},{"id":2497,"depth":1644,"text":2498},{"id":2515,"depth":1644,"text":2516},{"id":2620,"depth":1644,"text":2621},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":2679,"level":2149,"video":2680,"templateId":2681,"type":2152,"format":2153,"intent_type":2682,"intent":2683,"tags":2684,"platfrom":2690},"3 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FIIQyYGVcjUY",55,"usecase","Interact with pages",[2685,2686,2687,2688,2689],"social-media","dm","messaging","data entry","google sheets",[2691],"Facebook","\u002Fguides\u002Fautomate-facebook-messages",{"title":2474,"description":2677},"guides\u002Fautomate-facebook-messages","PJEF8Dvc_FkQ8r4wZTPTx18uh9Gv20EB_r1u8pl85a0",{"id":2697,"title":2698,"body":2699,"date":2676,"description":2943,"extension":1653,"meta":2944,"navigation":1657,"order":1651,"path":2951,"seo":2952,"stem":2953,"__hash__":2954},"guides\u002Fguides\u002Fautomate-facebook-posts.md","How to automate posting to Facebook with a bot",{"type":1555,"value":2700,"toc":2935},[2701,2703,2710,2712,2714,2722,2726,2732,2736,2738,2742,2849,2853,2863,2865,2869,2871,2875,2926],[1567,2702],{},[1570,2704,2705,2706,2709],{},"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 ",[1681,2707,2708],{},"\"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,2711],{},[1562,2713,2487],{"id":2486},[1570,2715,1679,2716,2718,2719,1696],{},[1681,2717,1683],{},", assuming you already have an account. Name your sheet something like ",[1681,2720,2721],{},"\"Facebook posts\"",[1562,2723,2725],{"id":2724},"install-the-facebook-post-bot","Install the Facebook post bot",[1570,2727,2728,2729,2731],{},"To install this FB bot, click ",[1681,2730,1706],{},". 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.",[1570,2733,1714,2734,1696],{},[1681,2735,1717],{},[1570,2737,1720],{},[1562,2739,2741],{"id":2740},"configure-your-facebook-post-bot-in-four-easy-steps","Configure your Facebook post bot in four easy steps",[1729,2743,2744],{},[1577,2745,2746,2764],{},[1580,2747,2748,1738,2750,2752],{},[1681,2749,1737],{},[1740,2751,1742],{},[1577,2753,2754,2759],{},[1580,2755,2756,2758],{},[1740,2757,1749],{},": Search for the Google Sheet you created. Once found, click to select",[1580,2760,2761,2763],{},[1740,2762,1755],{},": Choose the tab with the posts in it",[1580,2765,2766,1738,2768,2770],{},[1681,2767,1761],{},[1740,2769,667],{},[1577,2771,2772,2779,2786,2802,2809,2825,2832],{},[1580,2773,2774,1738,2776],{},[1681,2775,1770],{},[1740,2777,2778],{},"Go to page: facebook.com^",[1580,2780,2781,1738,2783],{},[1681,2782,1793],{},[1740,2784,2785],{},"Click element: What's on your mind?^",[1580,2787,2788,1738,2790,2793],{},[1681,2789,1818],{},[1740,2791,2792],{},"Enter text: Post message",[1577,2794,2795],{},[1580,2796,2797,2799,2800],{},[1740,2798,2587],{},": Click 'Insert data', select ",[1740,2801,1874],{},[1580,2803,2804,1738,2806],{},[1681,2805,1860],{},[1740,2807,2808],{},"Click element: Picture icon button^",[1580,2810,2811,1738,2813,2816],{},[1681,2812,1888],{},[1740,2814,2815],{},"Upload a file: Grey upload field",[1577,2817,2818],{},[1580,2819,2820,2799,2823],{},[1740,2821,2822],{},"File Path",[1740,2824,1874],{},[1580,2826,2827,1738,2829],{},[1681,2828,1925],{},[1740,2830,2831],{},"Click element: Post^",[1580,2833,2834,1738,2837,2839],{},[1681,2835,2836],{},"2.7",[1740,2838,1928],{},[1577,2840,2841,2845],{},[1580,2842,2843,2758],{},[1740,2844,1749],{},[1580,2846,2847,2763],{},[1740,2848,1755],{},[1562,2850,2852],{"id":2851},"run-your-facebook-post-bot","Run your Facebook post bot",[1570,2854,2855,2856,2858,2859,2862],{},"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, ",[1596,2857,2627],{"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 ",[1596,2860,2861],{"href":1206},"'Upload from Google drive'"," step.",[1562,2864,1964],{"id":1963},[1570,2866,1967,2867,1972],{},[1596,2868,1971],{"href":1970},[1562,2870,1398],{"id":1975},[1570,2872,2642,2873,1696],{},[1596,2874,2627],{"href":638},[1729,2876,2877],{},[1577,2878,2879,2891,2901,2907,2917],{},[1580,2880,2881,2884,2885,2887,2888,1696],{},[1681,2882,2883],{},"'What's on your mind?' button not found?","\nReselect the button. It's using the ",[1596,2886,2025],{"href":1383}," setting ",[1740,2889,2890],{},"'element text'",[1580,2892,2893,2896,2897,2900],{},[1681,2894,2895],{},"Text not entering?","\nReselect the ",[1740,2898,2899],{},"'What's on your mind?'"," text input field.",[1580,2902,2903,2906],{},[1681,2904,2905],{},"Image icon not found?","\nReselect the picture icon element.",[1580,2908,2909,2912,2913,2916],{},[1681,2910,2911],{},"Upload field not found?","\nReselect the grey ",[1681,2914,2915],{},"\"Add photos\u002Fvideos\""," upload area.",[1580,2918,2919,2922,2925],{},[1681,2920,2921],{},"File not uploading?",[1596,2923,2924],{"href":1210},"Add a wait step"," after the upload, especially for large files.",[1570,2927,2127,2928,2930,2931],{},[1596,2929,2130],{"href":82},"\nTo learn more, read this full in-depth guide on automating ",[1596,2932,2934],{"href":2933},"\u002Fblog\u002Fhow-to-automate-facebook-posts","posting to facebook.",{"title":1640,"searchDepth":1641,"depth":1641,"links":2936},[2937,2938,2939,2940,2941,2942],{"id":2486,"depth":1644,"text":2487},{"id":2724,"depth":1644,"text":2725},{"id":2740,"depth":1644,"text":2741},{"id":2851,"depth":1644,"text":2852},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":2945,"level":2149,"video":2946,"templateId":2947,"type":2152,"format":2153,"intent_type":2682,"intent":2683,"tags":2948,"platfrom":2950},"4 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fn4OPAr1eiQ8",30,[2685,2949,2689],"posting",[2691],"\u002Fguides\u002Fautomate-facebook-posts",{"title":2698,"description":2943},"guides\u002Fautomate-facebook-posts","HavdTDWEWX014xj_KAX-d4MMh-HVaCNQ0hfrqYU1_O4",{"id":2956,"title":2957,"body":2958,"date":2676,"description":3156,"extension":1653,"meta":3157,"navigation":1657,"order":1651,"path":3166,"seo":3167,"stem":3168,"__hash__":3169},"guides\u002Fguides\u002Fautomate-gmail-inbox-clean.md","How to clean up your overflowing Gmail Inbox",{"type":1555,"value":2959,"toc":3149},[2960,2962,2965,2967,2971,2974,2976,2979,2983,3012,3016,3019,3021,3025,3029,3031,3139],[1567,2961],{},[1570,2963,2964],{},"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,2966],{},[1562,2968,2970],{"id":2969},"get-started-install-the-gmail-inbox-cleaner","Get started: install the Gmail inbox cleaner",[1570,2972,2973],{},"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.",[1570,2975,2510],{},[1570,2977,2978],{},"axiom.ai will guide you through the single step you need to configure in the app.",[1562,2980,2982],{"id":2981},"configure-your-gmail-inbox-cleaner-in-60-seconds","Configure your Gmail inbox cleaner in 60 seconds",[1729,2984,2985],{},[1577,2986,2987,3003],{},[1580,2988,2989,1738,2991,2994,2995],{},[1681,2990,1994],{},[1740,2992,2993],{},"Enter custom data:"," Add terms to search by",[1577,2996,2997],{},[1580,2998,2999,3002],{},[1740,3000,3001],{},"Custom data",": Enter emails or search terms, one per line.",[1580,3004,3005,3008],{},[1681,3006,3007],{},"Step 2.0 – 3.8",[1577,3009,3010],{},[1580,3011,2617],{},[1562,3013,3015],{"id":3014},"run-your-gmail-inbox-cleaner","Run your Gmail inbox cleaner",[1570,3017,3018],{},"For safety, first run a test using non-critical email addresses to search and remove.",[1562,3020,1964],{"id":1963},[1570,3022,1967,3023,1972],{},[1596,3024,1971],{"href":1970},[1562,3026,3028],{"id":3027},"trouibleshooting","Trouibleshooting",[1570,3030,1978],{},[1729,3032,3033],{},[1577,3034,3035,3046,3060,3071,3082,3093,3103,3117,3128],{},[1580,3036,3037,3040,1991,3042,3045],{},[1681,3038,3039],{},"Loops once?",[1989,3041],{},[1740,3043,3044],{},"Step 1.0 – Enter custom data",", check for blank spaces in the input field.",[1580,3047,3048,3051,1991,3053,3056,3057,1696],{},[1681,3049,3050],{},"Wrong URL?",[1989,3052],{},[1740,3054,3055],{},"Step 2.0 – Go to page",", make sure the URL is set to ",[1740,3058,3059],{},"https:\u002F\u002Fmail.google.com\u002Fmail\u002Fu\u002F0\u002F#inbox",[1580,3061,3062,3065,1991,3067,3070],{},[1681,3063,3064],{},"Search not working?",[1989,3066],{},[1740,3068,3069],{},"Step 3.1 – Enter text",", reselect the \"Search in mail\" input field.",[1580,3072,3073,3076,1991,3078,3081],{},[1681,3074,3075],{},"Select All not clicked?",[1989,3077],{},[1740,3079,3080],{},"Step 3.3 – Click element",", reselect the \"Select All\" tick box.",[1580,3083,3084,3087,1991,3089,3092],{},[1681,3085,3086],{},"Link not clicked?",[1989,3088],{},[1740,3090,3091],{},"Step 3.4 – Get data from bot's current page",", reselect \"Select all conversations that match this search\".",[1580,3094,3095,3098,3100,3101,1696],{},[1681,3096,3097],{},"Scraper retrying too long?",[1989,3099],{},"\nIn the same step, change \"Number of attempts when results not found\" to ",[1740,3102,1813],{},[1580,3104,3105,3108,1991,3110,3113,3114,3116],{},[1681,3106,3107],{},"Condition not working?",[1989,3109],{},[1740,3111,3112],{},"Step 3.5 – If condition",", make sure ",[1740,3115,1845],{}," is set.",[1580,3118,3119,3122,1991,3124,3127],{},[1681,3120,3121],{},"Delete not clicked?",[1989,3123],{},[1740,3125,3126],{},"Step 3.7 – Click element",", reselect the \"Delete\" button.",[1580,3129,3130,3133,1991,3135,3138],{},[1681,3131,3132],{},"Bot behaves randomly?",[1989,3134],{},[1740,3136,3137],{},"Step 3.8 – Wait",", increase the wait time.",[1570,3140,2127,3141,3143,3144,3148],{},[1596,3142,2130],{"href":82},"\nIf you are keen to learn more about browser automation, why not create an ",[1596,3145,3147],{"href":3146},"\u002Fblog\u002Fhow-to-send-email-blast","email blast"," using Gmail?",{"title":1640,"searchDepth":1641,"depth":1641,"links":3150},[3151,3152,3153,3154,3155],{"id":2969,"depth":1644,"text":2970},{"id":2981,"depth":1644,"text":2982},{"id":3014,"depth":1644,"text":3015},{"id":1963,"depth":1644,"text":1964},{"id":3027,"depth":1644,"text":3028},"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":3158,"level":2149,"video":3159,"templateId":3160,"type":2152,"format":2153,"intent_type":2682,"intent":3161,"tags":3162,"platfrom":3164},"2 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F3a0IKP3i_EY",13,"Send and manage emails",[3163],"email",[3165],"Gmail","\u002Fguides\u002Fautomate-gmail-inbox-clean",{"title":2957,"description":3156},"guides\u002Fautomate-gmail-inbox-clean","AtpQC69ZlgqlmCEiT92loTF1hKrp3y9V5FsxJxVx3Zk",{"id":3171,"title":3172,"body":3173,"date":3378,"description":3379,"extension":1653,"meta":3380,"navigation":1657,"order":1651,"path":3388,"seo":3389,"stem":3390,"__hash__":3391},"guides\u002Fguides\u002Fautomate-screenshots.md","How to automate screenshots",{"type":1555,"value":3174,"toc":3370},[3175,3177,3180,3182,3184,3189,3193,3200,3204,3206,3210,3313,3317,3320,3322,3330,3332,3334,3366],[1567,3176],{},[1570,3178,3179],{},"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,3181],{},[1562,3183,1676],{"id":1675},[1570,3185,1679,3186,3188],{},[1681,3187,1683],{},", assuming you already have an account. Name your sheet something like 'Automate screenshots’ and set up a tab called 'Website links'.",[1562,3190,3192],{"id":3191},"install-the-screenshot-bot","Install the Screenshot bot",[1570,3194,3195,3196,1707,3198,1711],{},"To install this Screenshot bot click ",[1681,3197,1706],{},[1681,3199,1710],{},[1570,3201,1714,3202,1696],{},[1681,3203,1717],{},[1570,3205,1720],{},[1562,3207,3209],{"id":3208},"configure-your-screenshot-bot-in-minutes","Configure your Screenshot bot in minutes",[1729,3211,3212],{},[1577,3213,3214,3231],{},[1580,3215,3216,1738,3218,3220],{},[1681,3217,1737],{},[1740,3219,1742],{},[1577,3221,3222,3226],{},[1580,3223,3224,1750],{},[1740,3225,1749],{},[1580,3227,3228,3230],{},[1740,3229,1755],{},": Choose the sheet tab called 'Website links'.",[1580,3232,3233,1738,3235,3237],{},[1681,3234,1761],{},[1740,3236,667],{},[1577,3238,3239,3255,3287],{},[1580,3240,3241,1738,3243,3245],{},[1681,3242,1770],{},[1740,3244,1043],{},[1577,3246,3247],{},[1580,3248,3249,3251,3252,3254],{},[1740,3250,1779],{},": Click 'Insert Data', select ",[1740,3253,1787],{},", and choose the column with the links in it.",[1580,3256,3257,1738,3259,3262],{},[1681,3258,1793],{},[1740,3260,3261],{},"Save screenshot locally",[1577,3263,3264,3270,3276,3282],{},[1580,3265,3266,3269],{},[1740,3267,3268],{},"Folder",": Set a folder to download to.",[1580,3271,3272,3275],{},[1740,3273,3274],{},"File name",": Optional.",[1580,3277,3278,3281],{},[1740,3279,3280],{},"File type",": Select file types JPEG or PNG.",[1580,3283,3284,3275],{},[1740,3285,3286],{},"Overwrite existing file",[1580,3288,3289,1738,3291,3293],{},[1681,3290,1818],{},[1740,3292,1928],{},[1577,3294,3295,3299,3304,3309],{},[1580,3296,3297,1750],{},[1740,3298,1749],{},[1580,3300,3301,3303],{},[1740,3302,1755],{},": Choose the tab you created for website links.",[1580,3305,3306,3308],{},[1740,3307,1944],{},": Set to 1.",[1580,3310,3311,3308],{},[1740,3312,1951],{},[1562,3314,3316],{"id":3315},"run-your-screenshot-bot","Run your Screenshot bot",[1570,3318,3319],{},"We suggest running a test first, stopping the bot after a few loops, and reviewing the screenshots.",[1562,3321,1964],{"id":1963},[1570,3323,1967,3324,3326,3327,2862],{},[1596,3325,1971],{"href":1970},", 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 ",[1596,3328,3329],{"href":996},"Download to Google Drive",[1562,3331,1398],{"id":1975},[1570,3333,1978],{},[1729,3335,3336],{},[1577,3337,3338,3355],{},[1580,3339,3340,3343,1991,3345,3347,3348,3350,3351,3354],{},[1681,3341,3342],{},"Want to set a specific number of loops?",[1989,3344],{},[1740,3346,1994],{},", set the ",[1740,3349,1998],{}," to something like ",[1740,3352,3353],{},"AE100"," to scrape 100 rows.",[1580,3356,3357,3360,1991,3362,3365],{},[1681,3358,3359],{},"Files not saving?",[1989,3361],{},[1740,3363,3364],{},"Step 2.2 – Save screenshot locally",", check folder permissions on your computer.",[1570,3367,2127,3368],{},[1596,3369,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":3371},[3372,3373,3374,3375,3376,3377],{"id":1675,"depth":1644,"text":1676},{"id":3191,"depth":1644,"text":3192},{"id":3208,"depth":1644,"text":3209},{"id":3315,"depth":1644,"text":3316},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":3381,"read":2679,"video":3382,"templateId":3383,"type":2152,"format":2153,"intent_type":3384,"intent":2683,"tags":3385,"platfrom":3386},"\u002Ftemplates\u002Faxiom-template-icon.png","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FBJB-siW113A",48,"workflow",[2158,2689],[3387],"Any","\u002Fguides\u002Fautomate-screenshots",{"title":3172,"description":3379},"guides\u002Fautomate-screenshots","poZFHQiU-KBQxIrYiJy9tvAaZMjswtpUw7sTeZpi1-M",{"id":3393,"title":3394,"body":3395,"date":1651,"description":3853,"extension":1653,"meta":3854,"navigation":1657,"order":1651,"path":3857,"seo":3858,"stem":3859,"__hash__":3860},"guides\u002Fguides\u002Fautomator.md","How to use Apple Automator to trigger an axiom.ai automation",{"type":1555,"value":3396,"toc":3847},[3397,3399,3402,3404,3407,3430,3434,3437,3448,3473,3476,3823,3825,3828,3834,3836,3839,3844],[1567,3398],{},[1570,3400,3401],{},"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.",[1562,3403,2182],{"id":2181},[1570,3405,3406],{},"To get started, you will need thing from the axiom.ai Chrome extension:",[1729,3408,3409],{},[2191,3410,3411,3418,3423],{},[1580,3412,3413,3415,3416,1696],{},[1681,3414,1628],{}," - The API key is found on the ",[1596,3417,2201],{"href":2200},[1580,3419,3420,3422],{},[1681,3421,2206],{}," - Get the name of the automation you wish to trigger.",[1580,3424,3425,3427,3428,1696],{},[1681,3426,2212],{}," - The current endpoint is ",[1740,3429,2216],{},[1562,3431,3433],{"id":3432},"trigger-an-axiomai-automation-using-automator","Trigger an axiom.ai automation using Automator",[1570,3435,3436],{},"To get started, create your Automator workflow as you normally would, when you're ready to trigger your automation, continue this guide.",[1570,3438,3439,3440,3443,3444,3447],{},"Using the data from above, we will construct multiple variables called ",[1740,3441,3442],{},"webhookURL",", to store the URL of the axiom.ai API, and ",[1740,3445,3446],{},"jsonData"," to construct the payload that is to be sent to the automation. There are numerous modifications that will be needed:",[1729,3449,3450],{},[1577,3451,3452,3458,3464],{},[1580,3453,3454,3457],{},[1740,3455,3456],{},"\u003CYOUR_KEY>"," - This should be replaced with your API key.",[1580,3459,3460,3463],{},[1740,3461,3462],{},"\u003CAUTOMATION_NAME>"," - This should be replaced with your automation name.",[1580,3465,3466,3469,3470,3472],{},[1740,3467,3468],{},"data"," - The contents inside of the ",[1740,3471,3468],{}," 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.",[1570,3474,3475],{},"When ready, add a \"Run AppleScript\" component to your workflow to add thing script into your workflow and trigger your automation:",[2353,3477,3481],{"className":3478,"code":3479,"language":3480,"meta":1640,"style":1640},"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",[1740,3482,3483,3491,3508,3523,3529,3601,3680,3686,3692,3715,3768,3782,3794,3806,3815],{"__ignoreMap":1640},[2361,3484,3485,3488],{"class":2363,"line":2364},[2361,3486,3487],{"class":2367},"on",[2361,3489,3490],{"class":2371}," run\n",[2361,3492,3493,3496,3499,3502,3505],{"class":2363,"line":1644},[2361,3494,3495],{"class":2367},"    --",[2361,3497,3498],{"class":2371}," The",[2361,3500,3501],{"class":2371}," endpoint",[2361,3503,3504],{"class":2371}," from",[2361,3506,3507],{"class":2371}," above\n",[2361,3509,3510,3514,3517,3520],{"class":2363,"line":1641},[2361,3511,3513],{"class":3512},"sHrmB","    set",[2361,3515,3516],{"class":2371}," webhookURL",[2361,3518,3519],{"class":2371}," to",[2361,3521,3522],{"class":2371}," \"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger\"\n",[2361,3524,3526],{"class":2363,"line":3525},4,[2361,3527,3528],{"emptyLinePlaceholder":1657},"\n",[2361,3530,3532,3534,3537,3540,3543,3546,3549,3551,3554,3557,3559,3561,3564,3567,3570,3573,3576,3579,3581,3584,3587,3590,3593,3595,3598],{"class":2363,"line":3531},5,[2361,3533,3495],{"class":2367},[2361,3535,3536],{"class":2371}," This",[2361,3538,3539],{"class":2371}," is",[2361,3541,3542],{"class":2371}," the",[2361,3544,3545],{"class":2371}," payload",[2361,3547,3548],{"class":2371}," that",[2361,3550,3539],{"class":2371},[2361,3552,3553],{"class":2371}," being",[2361,3555,3556],{"class":2371}," sent",[2361,3558,3519],{"class":2371},[2361,3560,3542],{"class":2371},[2361,3562,3563],{"class":2371}," axiom.ai",[2361,3565,3566],{"class":2371}," API.",[2361,3568,3569],{"class":2371}," All",[2361,3571,3572],{"class":2371}," quotation",[2361,3574,3575],{"class":2371}," marks",[2361,3577,3578],{"class":2371}," inside",[2361,3580,3542],{"class":2371},[2361,3582,3583],{"class":2371}," curly",[2361,3585,3586],{"class":2371}," brackets",[2361,3588,3589],{"class":2371}," will",[2361,3591,3592],{"class":2371}," need",[2361,3594,3519],{"class":2371},[2361,3596,3597],{"class":2371}," be",[2361,3599,3600],{"class":2371}," escaped.\n",[2361,3602,3604,3606,3609,3611,3614,3618,3621,3623,3626,3628,3630,3632,3635,3637,3640,3642,3644,3646,3648,3650,3652,3654,3656,3658,3661,3663,3666,3668,3670,3672,3675,3677],{"class":2363,"line":3603},6,[2361,3605,3513],{"class":3512},[2361,3607,3608],{"class":2371}," jsonData",[2361,3610,3519],{"class":2371},[2361,3612,3613],{"class":2371}," \"{ ",[2361,3615,3617],{"class":3616},"sjeE4","\\\"",[2361,3619,3620],{"class":2371},"key",[2361,3622,3617],{"class":3616},[2361,3624,3625],{"class":2371},": ",[2361,3627,3617],{"class":3616},[2361,3629,3456],{"class":2371},[2361,3631,3617],{"class":3616},[2361,3633,3634],{"class":2371},", ",[2361,3636,3617],{"class":3616},[2361,3638,3639],{"class":2371},"name",[2361,3641,3617],{"class":3616},[2361,3643,3625],{"class":2371},[2361,3645,3617],{"class":3616},[2361,3647,3462],{"class":2371},[2361,3649,3617],{"class":3616},[2361,3651,3634],{"class":2371},[2361,3653,3617],{"class":3616},[2361,3655,3468],{"class":2371},[2361,3657,3617],{"class":3616},[2361,3659,3660],{"class":2371},": [[",[2361,3662,3617],{"class":3616},[2361,3664,3665],{"class":2371},"Item 1",[2361,3667,3617],{"class":3616},[2361,3669,3634],{"class":2371},[2361,3671,3617],{"class":3616},[2361,3673,3674],{"class":2371},"Item 2",[2361,3676,3617],{"class":3616},[2361,3678,3679],{"class":2371},"]] }\"\n",[2361,3681,3683],{"class":2363,"line":3682},7,[2361,3684,3685],{"class":2402},"    \n",[2361,3687,3689],{"class":2363,"line":3688},8,[2361,3690,3691],{"class":2367},"    try\n",[2361,3693,3695,3698,3701,3703,3706,3709,3712],{"class":2363,"line":3694},9,[2361,3696,3697],{"class":2367},"        --",[2361,3699,3700],{"class":2371}," Send",[2361,3702,3542],{"class":2371},[2361,3704,3705],{"class":2371}," POST",[2361,3707,3708],{"class":2371}," request",[2361,3710,3711],{"class":2371}," using",[2361,3713,3714],{"class":2371}," cURL\n",[2361,3716,3718,3721,3724,3726,3729,3732,3735,3738,3741,3744,3747,3750,3752,3754,3757,3759,3761,3763,3765],{"class":2363,"line":3717},10,[2361,3719,3720],{"class":3512},"        set",[2361,3722,3723],{"class":2371}," response",[2361,3725,3519],{"class":2371},[2361,3727,3728],{"class":2371}," do",[2361,3730,3731],{"class":2371}," shell",[2361,3733,3734],{"class":2371}," script",[2361,3736,3737],{"class":2371}," \"curl -X POST \"",[2361,3739,3740],{"class":2402}," & ",[2361,3742,3743],{"class":2367},"quoted",[2361,3745,3746],{"class":2371}," form",[2361,3748,3749],{"class":2371}," of",[2361,3751,3516],{"class":2371},[2361,3753,3740],{"class":2402},[2361,3755,3756],{"class":2367},"\" -H 'Content-Type: application\u002Fjson' -d \"",[2361,3758,3740],{"class":2402},[2361,3760,3743],{"class":2367},[2361,3762,3746],{"class":2371},[2361,3764,3749],{"class":2371},[2361,3766,3767],{"class":2371}," jsonData\n",[2361,3769,3771,3774,3777,3779],{"class":2363,"line":3770},11,[2361,3772,3773],{"class":3616},"        return",[2361,3775,3776],{"class":2371}," \"Webhook successful: \"",[2361,3778,3740],{"class":2402},[2361,3780,3781],{"class":2367},"response\n",[2361,3783,3785,3788,3791],{"class":2363,"line":3784},12,[2361,3786,3787],{"class":2367},"    on",[2361,3789,3790],{"class":2371}," error",[2361,3792,3793],{"class":2371}," errorMsg\n",[2361,3795,3796,3798,3801,3803],{"class":2363,"line":3160},[2361,3797,3773],{"class":3616},[2361,3799,3800],{"class":2371}," \"Webhook failed: \"",[2361,3802,3740],{"class":2402},[2361,3804,3805],{"class":2367},"errMsg\n",[2361,3807,3809,3812],{"class":2363,"line":3808},14,[2361,3810,3811],{"class":3616},"    end",[2361,3813,3814],{"class":2402}," try\n",[2361,3816,3818,3821],{"class":2363,"line":3817},15,[2361,3819,3820],{"class":3616},"end",[2361,3822,3490],{"class":2402},[1562,3824,2410],{"id":2409},[1570,3826,3827],{},"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.",[1570,3829,3830,3831,1696],{},"For more information on errors related to the axiom.ai API, see ",[1596,3832,3833],{"href":1409},"Common Errors",[1562,3835,2430],{"id":2429},[1570,3837,3838],{},"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.",[1570,3840,3841],{},[2441,3842,3843],{},"Information accurate as of January 2025, changes to either platform may render these instructions non-functional.",[2445,3845,3846],{},"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":1640,"searchDepth":1641,"depth":1641,"links":3848},[3849,3850,3851,3852],{"id":2181,"depth":1644,"text":2182},{"id":3432,"depth":1644,"text":3433},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":3855,"platfrom":3856},[2463,2464],[2466],"\u002Fguides\u002Fautomator",{"title":3394,"description":3853},"guides\u002Fautomator","K_I1mqpJ2vYezZL06hRST2ypKqjLgTp_XVcwqftlYA0",{"id":3862,"title":3863,"body":3864,"date":1651,"description":4974,"extension":1653,"meta":4975,"navigation":1657,"order":1651,"path":4978,"seo":4979,"stem":4980,"__hash__":4981},"guides\u002Fguides\u002Fbaserow.md","How to post data to Baserow using an axiom.ai automation",{"type":1555,"value":3865,"toc":4963},[3866,3868,3877,3879,3882,3885,3906,3910,3913,3917,3920,3930,3933,3989,3992,4280,4298,4314,4322,4326,4329,4332,4397,4400,4602,4616,4620,4622,4625,4670,4672,4880,4903,4906,4917,4919,4925,4928,4936,4938,4946,4949,4960],[1567,3867],{},[1570,3869,3870,3876],{},[1596,3871,3875],{"href":3872,"rel":3873},"https:\u002F\u002Fbaserow.io",[3874],"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.",[1562,3878,2182],{"id":2181},[1570,3880,3881],{},"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.",[1570,3883,3884],{},"To send data to Baserow from your automation, you'll need the following information from your database:",[1729,3886,3887],{},[2191,3888,3889,3900],{},[1580,3890,3891,3894,3895,3899],{},[1681,3892,3893],{},"Table ID"," - You'll find this in the URL - navigate to your table, and grab the second last number. For example, ",[1596,3896,3897],{"href":3897,"rel":3898},"https:\u002F\u002Fbaserow.io\u002Fdatabase\u002Fxxxxxx\u002Ftable\u002F",[3874],"\u003CTABLE_ID>\u002Fxxxxxx.",[1580,3901,3902,3905],{},[1681,3903,3904],{},"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.",[1562,3907,3909],{"id":3908},"automating-baserow-using-an-axiomai-automation","Automating Baserow using an axiom.ai automation",[1570,3911,3912],{},"There are many functions of Baserow that can be used within your automation to send data to Baserow, or fetch data from Baserow.",[1611,3914,3916],{"id":3915},"sending-data-to-baserow","Sending data to Baserow",[1570,3918,3919],{},"Create your automation as you normally would - when you're ready to send your data onto Baserow, continue this guide.",[1570,3921,3922,3923,3925,3926,3929],{},"If the data that you are looking to send contains multiple rows of data, first add a ",[1596,3924,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 ",[1596,3927,3928],{"href":1226},"Write Javascript"," step. If you only have a single row of data, you can skip adding the \"Loop through data\" step.",[1570,3931,3932],{},"First, we will establish some variables to hold important information that your script will need, replacing the text within the \u003C > with your data:",[2353,3934,3936],{"className":2390,"code":3935,"language":2392,"meta":1640,"style":1640},"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",[1740,3937,3938,3955,3975],{"__ignoreMap":1640},[2361,3939,3940,3943,3946,3949,3952],{"class":2363,"line":2364},[2361,3941,3942],{"class":3616},"const",[2361,3944,3945],{"class":3512}," table_id",[2361,3947,3948],{"class":3616}," =",[2361,3950,3951],{"class":2371}," \"\u003CTABLE_ID>\"",[2361,3953,3954],{"class":2402},";\n",[2361,3956,3957,3959,3962,3964,3967,3970,3973],{"class":2363,"line":1644},[2361,3958,3942],{"class":3616},[2361,3960,3961],{"class":3512}," baserow_url",[2361,3963,3948],{"class":3616},[2361,3965,3966],{"class":2371}," `https:\u002F\u002Fapi.baserow.io\u002Fapi\u002Fdatabase\u002Frows\u002Ftable\u002F${",[2361,3968,3969],{"class":2402},"table_id",[2361,3971,3972],{"class":2371},"}\u002F?user_field_names=true`",[2361,3974,3954],{"class":2402},[2361,3976,3977,3979,3982,3984,3987],{"class":2363,"line":1641},[2361,3978,3942],{"class":3616},[2361,3980,3981],{"class":3512}," database_token",[2361,3983,3948],{"class":3616},[2361,3985,3986],{"class":2371}," \"\u003CDATABASE_TOKEN>\"",[2361,3988,3954],{"class":2402},[1570,3990,3991],{},"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.",[2353,3993,3995],{"className":2390,"code":3994,"language":2392,"meta":1640,"style":1640},"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",[1740,3996,3997,4019,4026,4044,4055,4060,4078,4088,4093,4107,4119,4129,4134,4139,4144,4158,4176,4184,4190,4195,4216,4228,4240,4255,4261,4267,4272],{"__ignoreMap":1640},[2361,3998,3999,4001,4005,4007,4010,4013,4016],{"class":2363,"line":2364},[2361,4000,3942],{"class":3616},[2361,4002,4004],{"class":4003},"sbjLL"," sendToBaserow",[2361,4006,3948],{"class":3616},[2361,4008,4009],{"class":3616}," async",[2361,4011,4012],{"class":2402}," () ",[2361,4014,4015],{"class":3616},"=>",[2361,4017,4018],{"class":2402}," {\n",[2361,4020,4021,4024],{"class":2363,"line":1644},[2361,4022,4023],{"class":3616},"    try",[2361,4025,4018],{"class":2402},[2361,4027,4028,4031,4033,4035,4038,4041],{"class":2363,"line":1641},[2361,4029,4030],{"class":3616},"        const",[2361,4032,3723],{"class":3512},[2361,4034,3948],{"class":3616},[2361,4036,4037],{"class":3616}," await",[2361,4039,4040],{"class":4003}," fetch",[2361,4042,4043],{"class":2402},"(baserow_url, {\n",[2361,4045,4046,4049,4052],{"class":2363,"line":3525},[2361,4047,4048],{"class":2402},"            method: ",[2361,4050,4051],{"class":2371},"'POST'",[2361,4053,4054],{"class":2402},",\n",[2361,4056,4057],{"class":2363,"line":3531},[2361,4058,4059],{"class":2402},"            headers: {\n",[2361,4061,4062,4065,4067,4070,4073,4076],{"class":2363,"line":3603},[2361,4063,4064],{"class":2371},"                \"Authorization\"",[2361,4066,3625],{"class":2402},[2361,4068,4069],{"class":2371},"`Token ${",[2361,4071,4072],{"class":2402},"database_token",[2361,4074,4075],{"class":2371},"}`",[2361,4077,4054],{"class":2402},[2361,4079,4080,4083,4085],{"class":2363,"line":3682},[2361,4081,4082],{"class":2371},"                \"Content-Type\"",[2361,4084,3625],{"class":2402},[2361,4086,4087],{"class":2371},"\"application\u002Fx-www-form-urlencoded\"\n",[2361,4089,4090],{"class":2363,"line":3688},[2361,4091,4092],{"class":2402},"            },\n",[2361,4094,4095,4098,4101,4104],{"class":2363,"line":3694},[2361,4096,4097],{"class":2402},"            body: ",[2361,4099,4100],{"class":3616},"new",[2361,4102,4103],{"class":4003}," URLSearchParams",[2361,4105,4106],{"class":2402},"({\n",[2361,4108,4109,4112,4114,4117],{"class":2363,"line":3717},[2361,4110,4111],{"class":2371},"                \"Name\"",[2361,4113,3625],{"class":2402},[2361,4115,4116],{"class":2371},"\"[google-sheet-data?*&0]\"",[2361,4118,4054],{"class":2402},[2361,4120,4121,4124,4126],{"class":2363,"line":3770},[2361,4122,4123],{"class":2371},"                \"Homepage\"",[2361,4125,3625],{"class":2402},[2361,4127,4128],{"class":2371},"\"[google-sheet-data?*&1]\"\n",[2361,4130,4131],{"class":2363,"line":3784},[2361,4132,4133],{"class":2402},"            })\n",[2361,4135,4136],{"class":2363,"line":3160},[2361,4137,4138],{"class":2402},"        });\n",[2361,4140,4141],{"class":2363,"line":3808},[2361,4142,4143],{"class":2402},"      \n",[2361,4145,4146,4149,4152,4155],{"class":2363,"line":3817},[2361,4147,4148],{"class":3616},"        if",[2361,4150,4151],{"class":2402}," (",[2361,4153,4154],{"class":3616},"!",[2361,4156,4157],{"class":2402},"response.ok) {\n",[2361,4159,4161,4164,4167,4170,4173],{"class":2363,"line":4160},16,[2361,4162,4163],{"class":2402},"            console.",[2361,4165,4166],{"class":4003},"error",[2361,4168,4169],{"class":2402},"(",[2361,4171,4172],{"class":2371},"\"Something went wrong with response\"",[2361,4174,4175],{"class":2402},", response);\n",[2361,4177,4179,4182],{"class":2363,"line":4178},17,[2361,4180,4181],{"class":3616},"            return",[2361,4183,3954],{"class":2402},[2361,4185,4187],{"class":2363,"line":4186},18,[2361,4188,4189],{"class":2402},"        }\n",[2361,4191,4193],{"class":2363,"line":4192},19,[2361,4194,4143],{"class":2402},[2361,4196,4198,4200,4203,4205,4207,4210,4213],{"class":2363,"line":4197},20,[2361,4199,4030],{"class":3616},[2361,4201,4202],{"class":3512}," result",[2361,4204,3948],{"class":3616},[2361,4206,4037],{"class":3616},[2361,4208,4209],{"class":2402}," response.",[2361,4211,4212],{"class":4003},"json",[2361,4214,4215],{"class":2402},"();\n",[2361,4217,4219,4222,4225],{"class":2363,"line":4218},21,[2361,4220,4221],{"class":2402},"        console.",[2361,4223,4224],{"class":4003},"log",[2361,4226,4227],{"class":2402},"(result);\n",[2361,4229,4231,4234,4237],{"class":2363,"line":4230},22,[2361,4232,4233],{"class":2402},"    } ",[2361,4235,4236],{"class":3616},"catch",[2361,4238,4239],{"class":2402}," (error) {\n",[2361,4241,4243,4245,4247,4249,4252],{"class":2363,"line":4242},23,[2361,4244,4221],{"class":2402},[2361,4246,4166],{"class":4003},[2361,4248,4169],{"class":2402},[2361,4250,4251],{"class":2371},"\"Something went wrong\"",[2361,4253,4254],{"class":2402},", error);\n",[2361,4256,4258],{"class":2363,"line":4257},24,[2361,4259,4260],{"class":2402},"    }\n",[2361,4262,4264],{"class":2363,"line":4263},25,[2361,4265,4266],{"class":2402},"}\n",[2361,4268,4270],{"class":2363,"line":4269},26,[2361,4271,3528],{"emptyLinePlaceholder":1657},[2361,4273,4275,4278],{"class":2363,"line":4274},27,[2361,4276,4277],{"class":4003},"sendToBaserow",[2361,4279,4215],{"class":2402},[1570,4281,4282,4283,4286,4287,4290,4291,4294,4295,4297],{},"Most of the code above will not need to be modified, however, you will need to update the code inside of the ",[1740,4284,4285],{},"body: new URLSearchParams({})"," code with the fields and data that you wish to send. The first item in the key-value pair, ",[1740,4288,4289],{},"Name",", for example, needs to be the name of a ",[2441,4292,4293],{},"single"," column. The second item will be the data that you are sending to Baserow - remember, you can use the ",[1596,4296,1841],{"href":1373}," option to insert data tokens from throughout your automation.",[1570,4299,4300,4301,4305,4306,4309,4310,4313],{},"By default, when you create a row using this method this will trigger webhooks - if you are following the guide on ",[1596,4302,4304],{"href":4303},"#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 ",[1740,4307,4308],{},"&send_webhook_events=false"," to the end of the ",[1740,4311,4312],{},"baserow_url"," variable in the code.",[1570,4315,4316],{},[2441,4317,4318,4319,4321],{},"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 ",[1596,4320,349],{"href":1210}," steps inside your \"Loop through data\" step.",[1611,4323,4325],{"id":4324},"retrieving-a-single-row-from-baserow","Retrieving a single row from Baserow",[1570,4327,4328],{},"Create your automation as you normally would - when you're ready to retrieve your data from Baserow, continue this guide.",[1570,4330,4331],{},"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:",[2353,4333,4335],{"className":2390,"code":4334,"language":2392,"meta":1640,"style":1640},"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",[1740,4336,4337,4349,4363,4375],{"__ignoreMap":1640},[2361,4338,4339,4341,4343,4345,4347],{"class":2363,"line":2364},[2361,4340,3942],{"class":3616},[2361,4342,3945],{"class":3512},[2361,4344,3948],{"class":3616},[2361,4346,3951],{"class":2371},[2361,4348,3954],{"class":2402},[2361,4350,4351,4353,4356,4358,4361],{"class":2363,"line":1644},[2361,4352,3942],{"class":3616},[2361,4354,4355],{"class":3512}," row_id",[2361,4357,3948],{"class":3616},[2361,4359,4360],{"class":2371}," \"\u003CTABLE_ROW>\"",[2361,4362,3954],{"class":2402},[2361,4364,4365,4367,4369,4371,4373],{"class":2363,"line":1641},[2361,4366,3942],{"class":3616},[2361,4368,3981],{"class":3512},[2361,4370,3948],{"class":3616},[2361,4372,3986],{"class":2371},[2361,4374,3954],{"class":2402},[2361,4376,4377,4379,4381,4383,4385,4387,4390,4393,4395],{"class":2363,"line":3525},[2361,4378,3942],{"class":3616},[2361,4380,3961],{"class":3512},[2361,4382,3948],{"class":3616},[2361,4384,3966],{"class":2371},[2361,4386,3969],{"class":2402},[2361,4388,4389],{"class":2371},"}\u002F${",[2361,4391,4392],{"class":2402},"row_id",[2361,4394,3972],{"class":2371},[2361,4396,3954],{"class":2402},[1570,4398,4399],{},"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.",[2353,4401,4403],{"className":2390,"code":4402,"language":2392,"meta":1640,"style":1640},"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",[1740,4404,4405,4422,4428,4442,4451,4455,4469,4477,4482,4486,4490,4500,4513,4517,4521,4537,4541,4547,4560,4568,4581,4585,4589,4593],{"__ignoreMap":1640},[2361,4406,4407,4409,4412,4414,4416,4418,4420],{"class":2363,"line":2364},[2361,4408,3942],{"class":3616},[2361,4410,4411],{"class":4003}," retrieveRow",[2361,4413,3948],{"class":3616},[2361,4415,4009],{"class":3616},[2361,4417,4012],{"class":2402},[2361,4419,4015],{"class":3616},[2361,4421,4018],{"class":2402},[2361,4423,4424,4426],{"class":2363,"line":1644},[2361,4425,4023],{"class":3616},[2361,4427,4018],{"class":2402},[2361,4429,4430,4432,4434,4436,4438,4440],{"class":2363,"line":1641},[2361,4431,4030],{"class":3616},[2361,4433,3723],{"class":3512},[2361,4435,3948],{"class":3616},[2361,4437,4037],{"class":3616},[2361,4439,4040],{"class":4003},[2361,4441,4043],{"class":2402},[2361,4443,4444,4446,4449],{"class":2363,"line":3525},[2361,4445,4048],{"class":2402},[2361,4447,4448],{"class":2371},"'GET'",[2361,4450,4054],{"class":2402},[2361,4452,4453],{"class":2363,"line":3531},[2361,4454,4059],{"class":2402},[2361,4456,4457,4459,4461,4463,4465,4467],{"class":2363,"line":3603},[2361,4458,4064],{"class":2371},[2361,4460,3625],{"class":2402},[2361,4462,4069],{"class":2371},[2361,4464,4072],{"class":2402},[2361,4466,4075],{"class":2371},[2361,4468,4054],{"class":2402},[2361,4470,4471,4473,4475],{"class":2363,"line":3682},[2361,4472,4082],{"class":2371},[2361,4474,3625],{"class":2402},[2361,4476,4087],{"class":2371},[2361,4478,4479],{"class":2363,"line":3688},[2361,4480,4481],{"class":2402},"            }\n",[2361,4483,4484],{"class":2363,"line":3694},[2361,4485,4138],{"class":2402},[2361,4487,4488],{"class":2363,"line":3717},[2361,4489,4143],{"class":2402},[2361,4491,4492,4494,4496,4498],{"class":2363,"line":3770},[2361,4493,4148],{"class":3616},[2361,4495,4151],{"class":2402},[2361,4497,4154],{"class":3616},[2361,4499,4157],{"class":2402},[2361,4501,4502,4504,4506,4508,4510],{"class":2363,"line":3784},[2361,4503,4163],{"class":2402},[2361,4505,4166],{"class":4003},[2361,4507,4169],{"class":2402},[2361,4509,4251],{"class":2371},[2361,4511,4512],{"class":2402},", response); \n",[2361,4514,4515],{"class":2363,"line":3160},[2361,4516,4189],{"class":2402},[2361,4518,4519],{"class":2363,"line":3808},[2361,4520,4143],{"class":2402},[2361,4522,4523,4525,4527,4529,4531,4533,4535],{"class":2363,"line":3817},[2361,4524,4030],{"class":3616},[2361,4526,4202],{"class":3512},[2361,4528,3948],{"class":3616},[2361,4530,4037],{"class":3616},[2361,4532,4209],{"class":2402},[2361,4534,4212],{"class":4003},[2361,4536,4215],{"class":2402},[2361,4538,4539],{"class":2363,"line":4160},[2361,4540,3528],{"emptyLinePlaceholder":1657},[2361,4542,4543],{"class":2363,"line":4178},[2361,4544,4546],{"class":4545},"sU953","        \u002F\u002F Return the results in a format that your automation is expecting.\n",[2361,4548,4549,4551,4554,4557],{"class":2363,"line":4186},[2361,4550,3773],{"class":3616},[2361,4552,4553],{"class":2402}," [Object.",[2361,4555,4556],{"class":4003},"values",[2361,4558,4559],{"class":2402},"(result)];\n",[2361,4561,4562,4564,4566],{"class":2363,"line":4192},[2361,4563,4233],{"class":2402},[2361,4565,4236],{"class":3616},[2361,4567,4239],{"class":2402},[2361,4569,4570,4572,4574,4576,4578],{"class":2363,"line":4197},[2361,4571,4221],{"class":2402},[2361,4573,4166],{"class":4003},[2361,4575,4169],{"class":2402},[2361,4577,4251],{"class":2371},[2361,4579,4580],{"class":2402},", error); \n",[2361,4582,4583],{"class":2363,"line":4218},[2361,4584,4260],{"class":2402},[2361,4586,4587],{"class":2363,"line":4230},[2361,4588,4266],{"class":2402},[2361,4590,4591],{"class":2363,"line":4242},[2361,4592,3528],{"emptyLinePlaceholder":1657},[2361,4594,4595,4598,4600],{"class":2363,"line":4257},[2361,4596,4597],{"class":3616},"return",[2361,4599,4411],{"class":4003},[2361,4601,4215],{"class":2402},[1570,4603,4604,4605,4608,4609],{},"Your row data will then be contained within the ",[1740,4606,4607],{},"code-data"," data token within your automation. ",[2441,4610,4611,4612,4615],{},"Note: this data will contain additional data such as the Row ID, it's recommended you review the data using a ",[1596,4613,4614],{"href":980},"Display a message"," step before use.",[1611,4617,4619],{"id":4618},"retrieving-multiple-rows-from-baserow","Retrieving multiple rows from Baserow",[1570,4621,4328],{},[1570,4623,4624],{},"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:",[2353,4626,4628],{"className":2390,"code":4627,"language":2392,"meta":1640,"style":1640},"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",[1740,4629,4630,4642,4654],{"__ignoreMap":1640},[2361,4631,4632,4634,4636,4638,4640],{"class":2363,"line":2364},[2361,4633,3942],{"class":3616},[2361,4635,3945],{"class":3512},[2361,4637,3948],{"class":3616},[2361,4639,3951],{"class":2371},[2361,4641,3954],{"class":2402},[2361,4643,4644,4646,4648,4650,4652],{"class":2363,"line":1644},[2361,4645,3942],{"class":3616},[2361,4647,3981],{"class":3512},[2361,4649,3948],{"class":3616},[2361,4651,3986],{"class":2371},[2361,4653,3954],{"class":2402},[2361,4655,4656,4658,4660,4662,4664,4666,4668],{"class":2363,"line":1641},[2361,4657,3942],{"class":3616},[2361,4659,3961],{"class":3512},[2361,4661,3948],{"class":3616},[2361,4663,3966],{"class":2371},[2361,4665,3969],{"class":2402},[2361,4667,3972],{"class":2371},[2361,4669,3954],{"class":2402},[1570,4671,4399],{},[2353,4673,4675],{"className":2390,"code":4674,"language":2392,"meta":1640,"style":1640},"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",[1740,4676,4677,4693,4699,4713,4721,4725,4739,4747,4751,4755,4759,4769,4781,4785,4789,4805,4810,4814,4840,4848,4860,4864,4868,4872],{"__ignoreMap":1640},[2361,4678,4679,4681,4683,4685,4687,4689,4691],{"class":2363,"line":2364},[2361,4680,3942],{"class":3616},[2361,4682,4411],{"class":4003},[2361,4684,3948],{"class":3616},[2361,4686,4009],{"class":3616},[2361,4688,4012],{"class":2402},[2361,4690,4015],{"class":3616},[2361,4692,4018],{"class":2402},[2361,4694,4695,4697],{"class":2363,"line":1644},[2361,4696,4023],{"class":3616},[2361,4698,4018],{"class":2402},[2361,4700,4701,4703,4705,4707,4709,4711],{"class":2363,"line":1641},[2361,4702,4030],{"class":3616},[2361,4704,3723],{"class":3512},[2361,4706,3948],{"class":3616},[2361,4708,4037],{"class":3616},[2361,4710,4040],{"class":4003},[2361,4712,4043],{"class":2402},[2361,4714,4715,4717,4719],{"class":2363,"line":3525},[2361,4716,4048],{"class":2402},[2361,4718,4448],{"class":2371},[2361,4720,4054],{"class":2402},[2361,4722,4723],{"class":2363,"line":3531},[2361,4724,4059],{"class":2402},[2361,4726,4727,4729,4731,4733,4735,4737],{"class":2363,"line":3603},[2361,4728,4064],{"class":2371},[2361,4730,3625],{"class":2402},[2361,4732,4069],{"class":2371},[2361,4734,4072],{"class":2402},[2361,4736,4075],{"class":2371},[2361,4738,4054],{"class":2402},[2361,4740,4741,4743,4745],{"class":2363,"line":3682},[2361,4742,4082],{"class":2371},[2361,4744,3625],{"class":2402},[2361,4746,4087],{"class":2371},[2361,4748,4749],{"class":2363,"line":3688},[2361,4750,4481],{"class":2402},[2361,4752,4753],{"class":2363,"line":3694},[2361,4754,4138],{"class":2402},[2361,4756,4757],{"class":2363,"line":3717},[2361,4758,4143],{"class":2402},[2361,4760,4761,4763,4765,4767],{"class":2363,"line":3770},[2361,4762,4148],{"class":3616},[2361,4764,4151],{"class":2402},[2361,4766,4154],{"class":3616},[2361,4768,4157],{"class":2402},[2361,4770,4771,4773,4775,4777,4779],{"class":2363,"line":3784},[2361,4772,4163],{"class":2402},[2361,4774,4166],{"class":4003},[2361,4776,4169],{"class":2402},[2361,4778,4251],{"class":2371},[2361,4780,4512],{"class":2402},[2361,4782,4783],{"class":2363,"line":3160},[2361,4784,4189],{"class":2402},[2361,4786,4787],{"class":2363,"line":3808},[2361,4788,4143],{"class":2402},[2361,4790,4791,4793,4795,4797,4799,4801,4803],{"class":2363,"line":3817},[2361,4792,4030],{"class":3616},[2361,4794,4202],{"class":3512},[2361,4796,3948],{"class":3616},[2361,4798,4037],{"class":3616},[2361,4800,4209],{"class":2402},[2361,4802,4212],{"class":4003},[2361,4804,4215],{"class":2402},[2361,4806,4807],{"class":2363,"line":4160},[2361,4808,4809],{"class":2402},"        \n",[2361,4811,4812],{"class":2363,"line":4178},[2361,4813,4546],{"class":4545},[2361,4815,4816,4818,4821,4824,4826,4829,4832,4835,4837],{"class":2363,"line":4186},[2361,4817,3773],{"class":3616},[2361,4819,4820],{"class":2402}," result.results.",[2361,4822,4823],{"class":4003},"map",[2361,4825,4169],{"class":2402},[2361,4827,4828],{"class":2367},"row",[2361,4830,4831],{"class":3616}," =>",[2361,4833,4834],{"class":2402}," Object.",[2361,4836,4556],{"class":4003},[2361,4838,4839],{"class":2402},"(row));\n",[2361,4841,4842,4844,4846],{"class":2363,"line":4192},[2361,4843,4233],{"class":2402},[2361,4845,4236],{"class":3616},[2361,4847,4239],{"class":2402},[2361,4849,4850,4852,4854,4856,4858],{"class":2363,"line":4197},[2361,4851,4221],{"class":2402},[2361,4853,4166],{"class":4003},[2361,4855,4169],{"class":2402},[2361,4857,4251],{"class":2371},[2361,4859,4580],{"class":2402},[2361,4861,4862],{"class":2363,"line":4218},[2361,4863,4260],{"class":2402},[2361,4865,4866],{"class":2363,"line":4230},[2361,4867,4266],{"class":2402},[2361,4869,4870],{"class":2363,"line":4242},[2361,4871,3528],{"emptyLinePlaceholder":1657},[2361,4873,4874,4876,4878],{"class":2363,"line":4257},[2361,4875,4597],{"class":3616},[2361,4877,4411],{"class":4003},[2361,4879,4215],{"class":2402},[1570,4881,4882,4883,3634,4886,3634,4889,2094,4892,4895,4896,4899,4900,4902],{},"There are various different parameters that can be provided to Baserow to customise the data that you are retrieving, such as ",[1740,4884,4885],{},"page",[1740,4887,4888],{},"size",[1740,4890,4891],{},"search",[1740,4893,4894],{},"order_by",". We recommend reviewing their API documentation for more details: ",[1740,4897,4898],{},"https:\u002F\u002Fbaserow.io\u002Fapi-docs\u002Fdatabase\u002F\u003CTABLE_ID>",". All rows of data will be contained within the ",[1740,4901,4607],{}," data token within your automation to use in later steps.",[1562,4904,4304],{"id":4905},"triggering-an-axiomai-automation-using-baserow",[1570,4907,4908,4909,4912,4913,4916],{},"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 ",[1596,4910,783],{"href":4911},".\u002Fzapier"," or ",[1596,4914,763],{"href":4915},".\u002Fpost-data-to-make"," as a service layer between axiom.ai and Baserow.",[1562,4918,2410],{"id":2409},[1570,4920,4921,4922,2862],{},"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 ",[1596,4923,4924],{"href":1214},"Write data to a Google Sheet",[1570,4926,4927],{},"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.",[1570,4929,4930,4931,2094,4934,1696],{},"For further advice on debugging your automations, see ",[1596,4932,4933],{"href":1487},"How to debug",[1596,4935,1408],{"href":1409},[1562,4937,2430],{"id":2429},[1570,4939,4940,4941],{},"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 ",[1596,4942,4945],{"href":4943,"rel":4944},"https:\u002F\u002Fwww.reddit.com\u002Fr\u002Faxiom_ai",[3874],"community",[1570,4947,4948],{},"Information correct as of 15th January 2025, changes to either platforms may require updates",[1570,4950,4951],{},[2441,4952,4953,4956,4957,4959],{},[4954,4955,1813],"sup",{}," Triggering your automations via webhook requires a paid subscription, see ",[1596,4958,1535],{"href":1534}," for more details.",[2445,4961,4962],{},"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":1640,"searchDepth":1641,"depth":1641,"links":4964},[4965,4966,4971,4972,4973],{"id":2181,"depth":1644,"text":2182},{"id":3908,"depth":1644,"text":3909,"children":4967},[4968,4969,4970],{"id":3915,"depth":1641,"text":3916},{"id":4324,"depth":1641,"text":4325},{"id":4618,"depth":1641,"text":4619},{"id":4905,"depth":1644,"text":4304},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to automatically post to your Baserow account using an axiom.ai automation",{"type":1740,"format":1729,"intent_type":2154,"intent":2461,"tags":4976,"platfrom":4977},[2463,2464],[3875],"\u002Fguides\u002Fbaserow",{"title":3863,"description":4974},"guides\u002Fbaserow","-Fz_8RMg6DKzQOpXEctBkNifMNzq0v1CSC6yXsY-xR8",{"id":4983,"title":4984,"body":4985,"date":1651,"description":5635,"extension":1653,"meta":5636,"navigation":1657,"order":1651,"path":5015,"seo":5640,"stem":5641,"__hash__":5642},"guides\u002Fguides\u002Fblack-box.md","How to scrape Amazon product data from Black Box into a Google Sheet",{"type":1555,"value":4986,"toc":5627},[4987,4989,4997,5003,5006,5017,5020,5023,5043,5047,5062,5072,5443,5446,5452,5456,5470,5474,5476,5499,5503,5516,5556,5563,5569,5571,5584,5597,5613],[1567,4988],{},[1570,4990,4991,4992,4996],{},"Black Box, a tool from ",[1596,4993,4995],{"href":4994},"\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.",[2227,4998],{"src":4999,"className":5000,"alt":5002},"\u002Fdocs\u002Fguides\u002Fblack-box-screen-shot.webp",[5001],"mb-3","Atuomate data entry into the Black box search field.",[1570,5004,5005],{},"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.",[1570,5007,5008,5009,4912,5013,1696],{},"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 ",[1596,5010,5012],{"href":5011},"\u002Fguides\u002Fcerebro","Cerebro",[1596,5014,5016],{"href":5015},"\u002Fguides\u002Fblack-box","BlackBox",[1562,5018,5019],{"id":2181},"Getting Started",[1570,5021,5022],{},"To begin, create a Google Sheet and add two tabs for search criteria and another to store the extracted data.",[2191,5024,5025,5031,5037],{},[1580,5026,5027,5030],{},[1681,5028,5029],{},"Create a new Google Sheet:"," If you're logged into Google, type sheet.new in your browser to quickly create a new sheet.",[1580,5032,5033,5036],{},[1681,5034,5035],{},"Set up tab one:"," Enter your criteria into the first tab.",[1580,5038,5039,5042],{},[1681,5040,5041],{},"Set up tab two:"," Name the second tab \"Products\" and leave it blank.",[1562,5044,5046],{"id":5045},"how-to-automate-extracting-product-data-from-black-box","How to automate extracting product data from Black Box",[1570,5048,5049,5050,5053,5054,5057,5058,5061],{},"To start building your bot, open ",[1681,5051,5052],{},"axiom.ai"," and click ",[1681,5055,5056],{},"\"New automation\""," to use the no-code bot builder. Then, click ",[1681,5059,5060],{},"\"Add first step\""," and follow the guide.",[1570,5063,5064,5065,5068,5069],{},"Download the ",[1596,5066,2153],{"href":5067,"download":1657},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_black_box.json"," we created for this scraper. Click to learn how to ",[1596,5070,5071],{"href":849},"upload it.",[1729,5073,5074],{},[1577,5075,5076,5094,5371,5410],{},[1580,5077,5078,1738,5080,5082],{},[1681,5079,1737],{},[1740,5081,1742],{},[1577,5083,5084,5089],{},[1580,5085,5086,5088],{},[1740,5087,1749],{},": Search for and add the Google Sheet you created.",[1580,5090,5091,5093],{},[1740,5092,1755],{},": Choose the tab containing the search criteria.",[1580,5095,5096,1738,5098,5100,5112],{},[1681,5097,1761],{},[1740,5099,667],{},[1577,5101,5102],{},[1580,5103,5104,1780,5106,5108,5109,5111],{},[1740,5105,667],{},[1740,5107,1783],{}," and select ",[1740,5110,1787],{},". The loop step will now iterate through the search criteria in the Google Sheet.",[1577,5113,5114,5134,5170,5196,5222,5248,5275],{},[1580,5115,5116,1738,5118,5120],{},[1681,5117,1770],{},[1740,5119,1043],{},[1577,5121,5122],{},[1580,5123,5124,5126,5127,1696],{},[1740,5125,1779],{},": The URL will look something like this: ",[1681,5128,5129,5130,5129],{},"\"",[1596,5131,5132],{"href":5132,"rel":5133},"https:\u002F\u002Fmembers.helium10.com\u002Fblack-box\u002Fproducts?accountId=xxxxxxx",[3874],[1580,5135,5136,1738,5138,5140],{},[1681,5137,1793],{},[1740,5139,329],{},[1577,5141,5142,5153],{},[1580,5143,5144,1780,5146,5148,5149,5152],{},[1740,5145,1803],{},[1740,5147,1803],{},", then select the ",[1740,5150,5151],{},"Market place"," dropdown.",[1580,5154,5155,5157,5158,5160,5161,5164,5165,5169],{},[1740,5156,2587],{},": In the text field, click ",[1740,5159,1783],{}," and choose the Google Sheet data. In the data preview, select column ",[1740,5162,5163],{},"A"," with the marketplace value.\n",[2227,5166],{"src":5167,"alt":5168},"\u002Fdocs\u002Fguides\u002Fseelector-tool-black-box.webp","axiom.ai select data to insert into select list in Black Box","  \n",[1580,5171,5172,1738,5174,5176],{},[1681,5173,1818],{},[1740,5175,329],{},[1577,5177,5178,5187],{},[1580,5179,5180,1780,5182,5148,5184,5152],{},[1740,5181,1803],{},[1740,5183,1803],{},[1740,5185,5186],{},"Category",[1580,5188,5189,5157,5191,5160,5193,5195],{},[1740,5190,2587],{},[1740,5192,1783],{},[1740,5194,5163],{}," with the category value.",[1580,5197,5198,1738,5200,5202],{},[1681,5199,1860],{},[1740,5201,329],{},[1577,5203,5204,5213],{},[1580,5205,5206,1780,5208,5148,5210,5152],{},[1740,5207,1803],{},[1740,5209,1803],{},[1740,5211,5212],{},"Improvement range",[1580,5214,5215,5157,5217,5160,5219,5221],{},[1740,5216,2587],{},[1740,5218,1783],{},[1740,5220,5163],{}," with the improvement range value.",[1580,5223,5224,1738,5226,5228],{},[1681,5225,1888],{},[1740,5227,329],{},[1577,5229,5230,5239],{},[1580,5231,5232,1780,5234,5148,5236,5152],{},[1740,5233,1803],{},[1740,5235,1803],{},[1740,5237,5238],{},"Price range",[1580,5240,5241,5157,5243,5160,5245,5247],{},[1740,5242,2587],{},[1740,5244,1783],{},[1740,5246,5163],{}," with the price range value.",[1580,5249,5250,1738,5252,5255],{},[1681,5251,1925],{},[1740,5253,5254],{},"Click element",[1577,5256,5257],{},[1580,5258,5259,1780,5261,5263,5264,5267,5268,5271,5272,1696],{},[1740,5260,1803],{},[1740,5262,1803],{},", then click on ",[1740,5265,5266],{},"Custom"," and tick ",[1740,5269,5270],{},"Use element text",". Finally, click ",[1740,5273,5274],{},"Complete",[1580,5276,5277,1738,5279,5281],{},[1681,5278,2836],{},[1740,5280,1796],{},[1577,5282,5283,5290,5308,5319,5326,5351,5357,5364],{},[1580,5284,5285,1780,5287,5289],{},[1740,5286,1803],{},[1740,5288,1803],{}," to open the multi-selector tool.",[1580,5291,5292,5293,5295,5296,5299,5300,5303,5304,5169],{},"In column ",[1740,5294,5163],{},", click the arrow, then click ",[1740,5297,5298],{},"Select link",". On the Black Box page, click the image in the ",[1740,5301,5302],{},"Product"," column, then repeat in the row below.\n",[2227,5305],{"src":5306,"alt":5307},"\u002Fdocs\u002Fguides\u002Fselect-data-black-box.webp","axiom.ai selecting data to scrape from Black Box",[1580,5309,5310,5311,5314,5315,5318],{},"Press ",[1740,5312,5313],{},"Shift + N"," to add a new column. On the page, select the ",[1740,5316,5317],{},"Product title"," in one row, then repeat in the next.",[1580,5320,5321,5322,5325],{},"Add another column. On the page, select the ",[1740,5323,5324],{},"BSR",", selecting the number in one row, then repeat in the next.",[1580,5327,5328,5329,5332,5333,5335,5336,5339,5340,5343,5344,5346,5347,5169],{},"To extract the ",[1740,5330,5331],{},"Price",", press ",[1740,5334,5313],{}," to add a new column. Then, in the new column, click the arrow and select ",[1740,5337,5338],{},"Custom Selector",", insert ",[1740,5341,5342],{},"[data-testid=\"table-cell-price\"]",", then press ",[1740,5345,5274],{},".\n",[2227,5348],{"src":5349,"alt":5350},"\u002Fdocs\u002Fguides\u002Fcustom-selector-black-box.webp","axiom.ai using a custom selector",[1580,5352,5353,5354,5318],{},"Add one more column. On the page, select the ",[1740,5355,5356],{},"Brand",[1580,5358,5359,5360,5363],{},"Select the ",[1740,5361,5362],{},"Next"," button for pagination using the right arrow key.",[1580,5365,5366,5367,5370],{},"Set a maximum number of results you wish to scrape. I chose ",[1740,5368,5369],{},"100"," when making this bot.",[1580,5372,5373,1738,5376,5378],{},[1681,5374,5375],{},"3.0",[1740,5377,4924],{},[1577,5379,5380,5385,5391,5401],{},[1580,5381,5382,5384],{},[1740,5383,1749],{},": Select your Google Sheet.",[1580,5386,5387,5390],{},[1740,5388,5389],{},"Sheet Name",": Choose the tab where you want to write the Amazon product data.",[1580,5392,5393,1780,5395,5397,5398,1696],{},[1740,5394,2109],{},[1740,5396,1783],{}," and choose ",[1740,5399,5400],{},"scraped-data-",[1580,5402,5403,1908,5406,5409],{},[1740,5404,5405],{},"Write Options",[1740,5407,5408],{},"Add to Existing Data"," to append new data without deleting existing data.",[1580,5411,5412,1738,5415,5417],{},[1681,5413,5414],{},"4.0",[1740,5416,1928],{},[1577,5418,5419,5423,5427,5435],{},[1580,5420,5421,5384],{},[1740,5422,1749],{},[1580,5424,5425,5093],{},[1740,5426,5389],{},[1580,5428,5429,5432,5433,1696],{},[1740,5430,5431],{},"First Row to Delete",": Leave this set to ",[1740,5434,1813],{},[1580,5436,5437,1810,5440,1696],{},[1740,5438,5439],{},"Last Row to Delete",[1740,5441,5442],{},"10",[1570,5444,5445],{},"The Black Box automation, when completed, should resemble the diagram below.",[2227,5447],{"src":5448,"className":5449,"alt":5451},"\u002Fdocs\u002Fguides\u002Fblack-box-axiom-ai-steps.webp",[5450],"mt-4","axiom.ai design pattern for building a bot to automate data extraction from helium10 tool black box",[1562,5453,5455],{"id":5454},"testing-your-black-box-automation","Testing your Black Box automation",[1570,5457,5458,5459,5462,5463,5466,5467,5469],{},"Once you have saved your ",[1681,5460,5461],{},"Helium 10 Black Box"," automation, click ",[1681,5464,5465],{},"\"Run\""," within the ",[1681,5468,5052],{}," extension to start extracting Amazon product data.",[2227,5471],{"src":5472,"alt":5473},"\u002Fdocs\u002Fguides\u002Fdata-google-sheet-black-box.WebP","axiom.ai data scraped into a Google Sheet",[1562,5475,1398],{"id":1975},[1729,5477,5478],{},[1577,5479,5480,5488],{},[1580,5481,5482,5485,5487],{},[1681,5483,5484],{},"Elements not found?",[1989,5486],{},"\nIf elements are not being clicked, try reselecting them. Changing marketplaces can affect selectors.",[1580,5489,5490,5493,1991,5495,5498],{},[1681,5491,5492],{},"Keyword data not loading in time?",[1989,5494],{},[1740,5496,5497],{},"Step 8",", adjust the wait time. The Cerebro tool can sometimes be slow to load data.",[1562,5500,5502],{"id":5501},"try-out-the-template","Try out the template",[1570,5504,5505,5506,5508,5509,5512,5513,5515],{},"While creating this guide and testing ",[1681,5507,5052],{}," on ",[1681,5510,5511],{},"Helium 10",", we also built a ",[1681,5514,2153],{},". If you choose to use the template, you will need to do the following:",[1729,5517,5518],{},[2191,5519,5520,5529,5539,5548],{},[1580,5521,5522,5525,5526,1696],{},[1681,5523,5524],{},"Step 1:"," Add your own ",[1681,5527,5528],{},"Google Sheet",[1580,5530,5531,5534,5535,5538],{},[1681,5532,5533],{},"Step 2.1:"," Add the ",[1681,5536,5537],{},"URL"," to the Black Box page while logged in.",[1580,5540,5541,5544,5545,5547],{},[1681,5542,5543],{},"Step 2.7:"," Select the ",[1681,5546,3468],{}," you wish to scrape.",[1580,5549,5550,5553,5554,1696],{},[1681,5551,5552],{},"Steps 2.8 and 2.9:"," Add your ",[1681,5555,5528],{},[1570,5557,5558,5559,5562],{},"Please note that this template is a ",[1681,5560,5561],{},"starting point",", and you may need to customize it.",[1570,5564,5565,5566,1696],{},"Click to download the ",[1596,5567,5568],{"href":5067,"download":1657},"Black Box template",[1562,5570,2430],{"id":2429},[1570,5572,5573,5574,5577,5578,5580,5581,5583],{},"Extracting product data from ",[1681,5575,5576],{},"Black Box"," is straightforward. You can simply point and select the data you want to extract. Some fields, like ",[1681,5579,5331],{},", may require a ",[1681,5582,2025],{},", but it’s easy to set up.",[1570,5585,5586,5587,5590,5591,5594,5595,5547],{},"You can fully customize this ",[1681,5588,5589],{},"automation"," by adding the ",[1681,5592,5593],{},"search criteria"," you want and selecting the ",[1681,5596,3468],{},[1570,5598,5599,5600,5603,5604,5606,5607,1696],{},"The same methods also apply to ",[1681,5601,5602],{},"Advanced Search Mode",". If you need help automating ",[1681,5605,5511],{},", reach out to ",[1681,5608,5609],{},[1596,5610,5612],{"href":5611},"mailto:support@axiom.ai","support@axiom.ai",[1570,5614,5615],{},[2441,5616,5617,5618,5621,5622,4912,5624,5626],{},"Testing was completed on ",[1681,5619,5620],{},"January 29, 2025",". Features in ",[1681,5623,5511],{},[1681,5625,5052],{}," may change over time, and updates may be needed.",{"title":1640,"searchDepth":1641,"depth":1641,"links":5628},[5629,5630,5631,5632,5633,5634],{"id":2181,"depth":1644,"text":5019},{"id":5045,"depth":1644,"text":5046},{"id":5454,"depth":1644,"text":5455},{"id":1975,"depth":1644,"text":1398},{"id":5501,"depth":1644,"text":5502},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2682,"intent":5637,"tags":5638,"platfrom":5639},"Extract data from websites",[2158,2689],[4995],{"title":4984,"description":5635},"guides\u002Fblack-box","AU_jBQq4FGoewRk0pdEfMaJX5Ns7uG8_lA0nhZAhrjE",{"id":5644,"title":5645,"body":5646,"date":1651,"description":6521,"extension":1653,"meta":6522,"navigation":1657,"order":1651,"path":6526,"seo":6527,"stem":6528,"__hash__":6529},"guides\u002Fguides\u002Fbluesky.md","How to post to Bluesky using an axiom.ai automation",{"type":1555,"value":5647,"toc":6510},[5648,5650,5653,5656,5658,5667,5683,5689,5693,5705,5709,5719,5743,5760,5884,5887,5891,5899,5947,5954,5965,6085,6088,6112,6116,6129,6145,6149,6152,6491,6493,6500,6502,6507],[1567,5649],{},[1570,5651,5652],{},"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.",[1570,5654,5655],{},"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.",[1562,5657,2182],{"id":2181},[1570,5659,5660,5661,5666],{},"A Bluesky account is required to post on Bluesky, head to ",[1596,5662,5665],{"href":5663,"rel":5664},"https:\u002F\u002Fbsky.app",[3874],"bsky.app"," to get started.",[1729,5668,5669],{},[2191,5670,5671,5677],{},[1580,5672,5673,5676],{},[1681,5674,5675],{},"Username"," - Your username can be found on your Bluesky profile.",[1580,5678,5679,5682],{},[1681,5680,5681],{},"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.",[1570,5684,5685,5686,1696],{},"To learn more about managing login credentials within your automations, see ",[1596,5687,5688],{"href":638},"Logins",[1562,5690,5692],{"id":5691},"creating-a-new-bluesky-post-using-an-axiomai-automation","Creating a new Bluesky post using an axiom.ai automation",[1570,5694,5695,5696,5699,5700,5704],{},"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 ",[1596,5697,5698],{"href":1226},"Write JavaScript"," step, see ",[1596,5701,5703],{"href":5702},"#full-script","full script"," for the whole script.",[1611,5706,5708],{"id":5707},"step-1-creating-an-authorisation-session","Step 1: Creating an authorisation session",[1570,5710,5711,5712,2094,5715,5718],{},"Authorising your account is the first step to automating posting on Bluesky. To do this, you will need your ",[1740,5713,5714],{},"username",[1740,5716,5717],{},"app password"," to get started. To begin, create an object containing your credentials:",[2353,5720,5722],{"className":2390,"code":5721,"language":2392,"meta":1640,"style":1640},"const authorisationData = {\n    \"identifier\": \"\u003CUSERNAME>.bsky.social\",\n    \"password\": \"\u003CAPP_PASSWORD>\"\n}\n",[1740,5723,5724,5729,5734,5739],{"__ignoreMap":1640},[2361,5725,5726],{"class":2363,"line":2364},[2361,5727,5728],{},"const authorisationData = {\n",[2361,5730,5731],{"class":2363,"line":1644},[2361,5732,5733],{},"    \"identifier\": \"\u003CUSERNAME>.bsky.social\",\n",[2361,5735,5736],{"class":2363,"line":1641},[2361,5737,5738],{},"    \"password\": \"\u003CAPP_PASSWORD>\"\n",[2361,5740,5741],{"class":2363,"line":3525},[2361,5742,4266],{},[1570,5744,5745,5746,5748,5749,2094,5752,5755,5756,5759],{},"Now that you have this, we can create a method to send a ",[1740,5747,2262],{}," request to Bluesky to authorise your account. We'll also be creating the ",[1740,5750,5751],{},"accessJwt",[1740,5753,5754],{},"did"," variables to hold the two pieces of data we need from the response. We will be sending this request to the ",[1740,5757,5758],{},"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.server.createSession"," endpoint.",[2353,5761,5763],{"className":2390,"code":5762,"language":2392,"meta":1640,"style":1640},"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",[1740,5764,5765,5770,5775,5779,5784,5789,5794,5799,5804,5809,5814,5819,5823,5828,5833,5837,5842,5847,5851,5856,5861,5866,5871,5876,5880],{"__ignoreMap":1640},[2361,5766,5767],{"class":2363,"line":2364},[2361,5768,5769],{},"var accessJwt;\n",[2361,5771,5772],{"class":2363,"line":1644},[2361,5773,5774],{},"var did;\n",[2361,5776,5777],{"class":2363,"line":1641},[2361,5778,3528],{"emptyLinePlaceholder":1657},[2361,5780,5781],{"class":2363,"line":3525},[2361,5782,5783],{},"const authorise = async () => {\n",[2361,5785,5786],{"class":2363,"line":3531},[2361,5787,5788],{},"    try {\n",[2361,5790,5791],{"class":2363,"line":3603},[2361,5792,5793],{},"        \u002F\u002F Create a POST request and send along your credentials from the `authorisationData` variable\n",[2361,5795,5796],{"class":2363,"line":3682},[2361,5797,5798],{},"        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.server.createSession\", {\n",[2361,5800,5801],{"class":2363,"line":3688},[2361,5802,5803],{},"            method: \"POST,\n",[2361,5805,5806],{"class":2363,"line":3694},[2361,5807,5808],{},"            headers: { \"Content-Type\": \"application\u002Fjson\" },\n",[2361,5810,5811],{"class":2363,"line":3717},[2361,5812,5813],{},"            body: JSON.stringify(authorisationData)\n",[2361,5815,5816],{"class":2363,"line":3770},[2361,5817,5818],{},"        })\n",[2361,5820,5821],{"class":2363,"line":3784},[2361,5822,3528],{"emptyLinePlaceholder":1657},[2361,5824,5825],{"class":2363,"line":3160},[2361,5826,5827],{},"        \u002F\u002F Something went wrong with the request, double check your credentials and the URL used above\n",[2361,5829,5830],{"class":2363,"line":3808},[2361,5831,5832],{},"        if (!response.ok) throw new Error(`Something went wrong: ${response.status}`);\n",[2361,5834,5835],{"class":2363,"line":3817},[2361,5836,3528],{"emptyLinePlaceholder":1657},[2361,5838,5839],{"class":2363,"line":4160},[2361,5840,5841],{},"        \u002F\u002F Parse the response\n",[2361,5843,5844],{"class":2363,"line":4178},[2361,5845,5846],{},"        const result = await response.json();\n",[2361,5848,5849],{"class":2363,"line":4186},[2361,5850,3528],{"emptyLinePlaceholder":1657},[2361,5852,5853],{"class":2363,"line":4192},[2361,5854,5855],{},"        \u002F\u002F Access the information in the `results` variable for later use\n",[2361,5857,5858],{"class":2363,"line":4197},[2361,5859,5860],{},"        accessJwt = result.accessJwt;\n",[2361,5862,5863],{"class":2363,"line":4218},[2361,5864,5865],{},"        did = result.did;\n",[2361,5867,5868],{"class":2363,"line":4230},[2361,5869,5870],{},"    } catch (error) {\n",[2361,5872,5873],{"class":2363,"line":4242},[2361,5874,5875],{},"        throw error;\n",[2361,5877,5878],{"class":2363,"line":4257},[2361,5879,4260],{},[2361,5881,5882],{"class":2363,"line":4263},[2361,5883,4266],{},[1570,5885,5886],{},"If all goes well, you'll now be authorised to continue with your script and create new posts on Bluesky.",[1611,5888,5890],{"id":5889},"step-2-create-a-new-post","Step 2: Create a new post",[1570,5892,5893,5894,2094,5896,5898],{},"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 ",[1740,5895,5751],{},[1740,5897,5754],{}," variables previously.",[2353,5900,5902],{"className":2390,"code":5901,"language":2392,"meta":1640,"style":1640},"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",[1740,5903,5904,5909,5914,5919,5924,5929,5934,5939,5943],{"__ignoreMap":1640},[2361,5905,5906],{"class":2363,"line":2364},[2361,5907,5908],{},"const data = {\n",[2361,5910,5911],{"class":2363,"line":1644},[2361,5912,5913],{},"    \"repo\": did,\n",[2361,5915,5916],{"class":2363,"line":1641},[2361,5917,5918],{},"    \"collection\": \"app.bsky.feed.post\",\n",[2361,5920,5921],{"class":2363,"line":3525},[2361,5922,5923],{},"    \"record\": {\n",[2361,5925,5926],{"class":2363,"line":3531},[2361,5927,5928],{},"        \"$type\": \"app.bsky.feed.post\",\n",[2361,5930,5931],{"class":2363,"line":3603},[2361,5932,5933],{},"        \"text\": \"[custom-data]\",\n",[2361,5935,5936],{"class":2363,"line":3682},[2361,5937,5938],{},"        \"createdAt\": `${new Date().toISOString()}`\n",[2361,5940,5941],{"class":2363,"line":3688},[2361,5942,4260],{},[2361,5944,5945],{"class":2363,"line":3694},[2361,5946,4266],{},[1570,5948,5949,5950,5953],{},"You'll notice in the line ",[1740,5951,5952],{},"\"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.",[1570,5955,5956,5957,5960,5961,5964],{},"Next, we will want to create the post itself. We will be using the ",[1740,5958,5959],{},"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.repo.createRecord"," endpoint. We'll also be creating a variable called ",[1740,5962,5963],{},"status"," to store the status of the response.",[2353,5966,5968],{"className":2390,"code":5967,"language":2392,"meta":1640,"style":1640},"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",[1740,5969,5970,5975,5979,5984,5989,5994,5998,6002,6007,6012,6017,6021,6026,6031,6035,6040,6044,6048,6052,6056,6060,6064,6069,6073,6077,6081],{"__ignoreMap":1640},[2361,5971,5972],{"class":2363,"line":2364},[2361,5973,5974],{},"var status;\n",[2361,5976,5977],{"class":2363,"line":1644},[2361,5978,3528],{"emptyLinePlaceholder":1657},[2361,5980,5981],{"class":2363,"line":1641},[2361,5982,5983],{},"const createPost = async () => {\n",[2361,5985,5986],{"class":2363,"line":3525},[2361,5987,5988],{},"    \u002F\u002F Throw an error if there is no access token\n",[2361,5990,5991],{"class":2363,"line":3531},[2361,5992,5993],{},"    if (!accessJwt) throw new Error(\"Access token missing\");\n",[2361,5995,5996],{"class":2363,"line":3603},[2361,5997,3528],{"emptyLinePlaceholder":1657},[2361,5999,6000],{"class":2363,"line":3682},[2361,6001,5788],{},[2361,6003,6004],{"class":2363,"line":3688},[2361,6005,6006],{},"        \u002F\u002F Create a POST request, using the `accessJwt` variable for authorisation, and the `createPostObject()` function to create your data\n",[2361,6008,6009],{"class":2363,"line":3694},[2361,6010,6011],{},"        const response = await fetch(\"https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.repo.createRecord\", {\n",[2361,6013,6014],{"class":2363,"line":3717},[2361,6015,6016],{},"            method: \"POST\",\n",[2361,6018,6019],{"class":2363,"line":3770},[2361,6020,4059],{},[2361,6022,6023],{"class":2363,"line":3784},[2361,6024,6025],{},"                \"Content-Type\": \"application\u002Fjson\",\n",[2361,6027,6028],{"class":2363,"line":3160},[2361,6029,6030],{},"                \"Authorization\": `Bearer ${accessJwt}`\n",[2361,6032,6033],{"class":2363,"line":3808},[2361,6034,4092],{},[2361,6036,6037],{"class":2363,"line":3817},[2361,6038,6039],{},"            body: JSON.stringify(data)\n",[2361,6041,6042],{"class":2363,"line":4160},[2361,6043,5818],{},[2361,6045,6046],{"class":2363,"line":4178},[2361,6047,3528],{"emptyLinePlaceholder":1657},[2361,6049,6050],{"class":2363,"line":4186},[2361,6051,5841],{},[2361,6053,6054],{"class":2363,"line":4192},[2361,6055,5846],{},[2361,6057,6058],{"class":2363,"line":4197},[2361,6059,3528],{"emptyLinePlaceholder":1657},[2361,6061,6062],{"class":2363,"line":4218},[2361,6063,5855],{},[2361,6065,6066],{"class":2363,"line":4230},[2361,6067,6068],{},"        status = result.validationStatus;\n",[2361,6070,6071],{"class":2363,"line":4242},[2361,6072,5870],{},[2361,6074,6075],{"class":2363,"line":4257},[2361,6076,5875],{},[2361,6078,6079],{"class":2363,"line":4263},[2361,6080,4260],{},[2361,6082,6083],{"class":2363,"line":4269},[2361,6084,4266],{},[1570,6086,6087],{},"Finally, we are going to want to call these functions and return a response to be handled in step 3.",[2353,6089,6091],{"className":2390,"code":6090,"language":2392,"meta":1640,"style":1640},"await authorise();\nawait createPost();\n\nreturn status;\n",[1740,6092,6093,6098,6103,6107],{"__ignoreMap":1640},[2361,6094,6095],{"class":2363,"line":2364},[2361,6096,6097],{},"await authorise();\n",[2361,6099,6100],{"class":2363,"line":1644},[2361,6101,6102],{},"await createPost();\n",[2361,6104,6105],{"class":2363,"line":1641},[2361,6106,3528],{"emptyLinePlaceholder":1657},[2361,6108,6109],{"class":2363,"line":3525},[2361,6110,6111],{},"return status;\n",[1611,6113,6115],{"id":6114},"step-3-handling-the-response","Step 3: Handling the response",[1570,6117,6118,6119,6121,6122,6125,6126,6128],{},"Now that your post has been posted, we can make use of your data. If all has gone well, the ",[1740,6120,5963],{}," variable that has been returned will contain a string ",[1740,6123,6124],{},"valid",". This will be stored in the ",[1740,6127,4607],{}," data token that is output from the 'Write Javascript' step. You can use this in various steps to make a dynamic automation, such as:",[1577,6130,6131,6136,6141],{},[1580,6132,6133,2862],{},[1596,6134,6135],{"href":1052},"If\u002Felse",[1580,6137,6138,2862],{},[1596,6139,6140],{"href":944},"Continue only if a condition is met",[1580,6142,6143,2862],{},[1596,6144,939],{"href":940},[1611,6146,6148],{"id":6147},"full-script","Full script",[1570,6150,6151],{},"As previously mentioned, this script should be contained inside a single \"Write Javascript\" step. Find the full script below:",[2353,6153,6155],{"className":2390,"code":6154,"language":2392,"meta":1640,"style":1640},"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",[1740,6156,6157,6161,6166,6170,6174,6178,6182,6186,6190,6194,6198,6202,6206,6210,6214,6218,6222,6226,6230,6234,6238,6242,6246,6250,6254,6258,6262,6266,6271,6276,6280,6285,6290,6295,6300,6305,6311,6317,6323,6328,6333,6338,6343,6348,6353,6358,6363,6368,6372,6377,6382,6387,6392,6397,6402,6406,6410,6415,6420,6425,6430,6435,6440,6445,6450,6456,6461,6466,6471,6476,6481,6486],{"__ignoreMap":1640},[2361,6158,6159],{"class":2363,"line":2364},[2361,6160,5728],{},[2361,6162,6163],{"class":2363,"line":1644},[2361,6164,6165],{},"    \"identifier\": \"\u003CUSERNAME>\",\n",[2361,6167,6168],{"class":2363,"line":1641},[2361,6169,5738],{},[2361,6171,6172],{"class":2363,"line":3525},[2361,6173,4266],{},[2361,6175,6176],{"class":2363,"line":3531},[2361,6177,3528],{"emptyLinePlaceholder":1657},[2361,6179,6180],{"class":2363,"line":3603},[2361,6181,5769],{},[2361,6183,6184],{"class":2363,"line":3682},[2361,6185,5774],{},[2361,6187,6188],{"class":2363,"line":3688},[2361,6189,3528],{"emptyLinePlaceholder":1657},[2361,6191,6192],{"class":2363,"line":3694},[2361,6193,5783],{},[2361,6195,6196],{"class":2363,"line":3717},[2361,6197,5788],{},[2361,6199,6200],{"class":2363,"line":3770},[2361,6201,5793],{},[2361,6203,6204],{"class":2363,"line":3784},[2361,6205,5798],{},[2361,6207,6208],{"class":2363,"line":3160},[2361,6209,5803],{},[2361,6211,6212],{"class":2363,"line":3808},[2361,6213,5808],{},[2361,6215,6216],{"class":2363,"line":3817},[2361,6217,5813],{},[2361,6219,6220],{"class":2363,"line":4160},[2361,6221,5818],{},[2361,6223,6224],{"class":2363,"line":4178},[2361,6225,3528],{"emptyLinePlaceholder":1657},[2361,6227,6228],{"class":2363,"line":4186},[2361,6229,5827],{},[2361,6231,6232],{"class":2363,"line":4192},[2361,6233,5832],{},[2361,6235,6236],{"class":2363,"line":4197},[2361,6237,3528],{"emptyLinePlaceholder":1657},[2361,6239,6240],{"class":2363,"line":4218},[2361,6241,5841],{},[2361,6243,6244],{"class":2363,"line":4230},[2361,6245,5846],{},[2361,6247,6248],{"class":2363,"line":4242},[2361,6249,3528],{"emptyLinePlaceholder":1657},[2361,6251,6252],{"class":2363,"line":4257},[2361,6253,5855],{},[2361,6255,6256],{"class":2363,"line":4263},[2361,6257,5860],{},[2361,6259,6260],{"class":2363,"line":4269},[2361,6261,5865],{},[2361,6263,6264],{"class":2363,"line":4274},[2361,6265,5870],{},[2361,6267,6269],{"class":2363,"line":6268},28,[2361,6270,5875],{},[2361,6272,6274],{"class":2363,"line":6273},29,[2361,6275,4260],{},[2361,6277,6278],{"class":2363,"line":2947},[2361,6279,4266],{},[2361,6281,6283],{"class":2363,"line":6282},31,[2361,6284,3528],{"emptyLinePlaceholder":1657},[2361,6286,6288],{"class":2363,"line":6287},32,[2361,6289,5908],{},[2361,6291,6293],{"class":2363,"line":6292},33,[2361,6294,5913],{},[2361,6296,6298],{"class":2363,"line":6297},34,[2361,6299,5918],{},[2361,6301,6303],{"class":2363,"line":6302},35,[2361,6304,5923],{},[2361,6306,6308],{"class":2363,"line":6307},36,[2361,6309,6310],{},"    \"$type\": \"app.bsky.feed.post\",\n",[2361,6312,6314],{"class":2363,"line":6313},37,[2361,6315,6316],{},"    \"text\": \"[custom-data]\",\n",[2361,6318,6320],{"class":2363,"line":6319},38,[2361,6321,6322],{},"    \"createdAt\": `${new Date().toISOString()}`\n",[2361,6324,6326],{"class":2363,"line":6325},39,[2361,6327,4260],{},[2361,6329,6331],{"class":2363,"line":6330},40,[2361,6332,4266],{},[2361,6334,6336],{"class":2363,"line":6335},41,[2361,6337,3528],{"emptyLinePlaceholder":1657},[2361,6339,6341],{"class":2363,"line":6340},42,[2361,6342,5974],{},[2361,6344,6346],{"class":2363,"line":6345},43,[2361,6347,3528],{"emptyLinePlaceholder":1657},[2361,6349,6351],{"class":2363,"line":6350},44,[2361,6352,5983],{},[2361,6354,6356],{"class":2363,"line":6355},45,[2361,6357,5988],{},[2361,6359,6361],{"class":2363,"line":6360},46,[2361,6362,5993],{},[2361,6364,6366],{"class":2363,"line":6365},47,[2361,6367,3528],{"emptyLinePlaceholder":1657},[2361,6369,6370],{"class":2363,"line":3383},[2361,6371,5788],{},[2361,6373,6375],{"class":2363,"line":6374},49,[2361,6376,6006],{},[2361,6378,6380],{"class":2363,"line":6379},50,[2361,6381,6011],{},[2361,6383,6385],{"class":2363,"line":6384},51,[2361,6386,6016],{},[2361,6388,6390],{"class":2363,"line":6389},52,[2361,6391,4059],{},[2361,6393,6395],{"class":2363,"line":6394},53,[2361,6396,6025],{},[2361,6398,6400],{"class":2363,"line":6399},54,[2361,6401,6030],{},[2361,6403,6404],{"class":2363,"line":2681},[2361,6405,4092],{},[2361,6407,6408],{"class":2363,"line":2151},[2361,6409,6039],{},[2361,6411,6413],{"class":2363,"line":6412},57,[2361,6414,5818],{},[2361,6416,6418],{"class":2363,"line":6417},58,[2361,6419,3528],{"emptyLinePlaceholder":1657},[2361,6421,6423],{"class":2363,"line":6422},59,[2361,6424,5841],{},[2361,6426,6428],{"class":2363,"line":6427},60,[2361,6429,5846],{},[2361,6431,6433],{"class":2363,"line":6432},61,[2361,6434,3528],{"emptyLinePlaceholder":1657},[2361,6436,6438],{"class":2363,"line":6437},62,[2361,6439,5855],{},[2361,6441,6443],{"class":2363,"line":6442},63,[2361,6444,6068],{},[2361,6446,6448],{"class":2363,"line":6447},64,[2361,6449,5870],{},[2361,6451,6453],{"class":2363,"line":6452},65,[2361,6454,6455],{},"        throw new Error(`Something wrong wrong: ${error}`)\n",[2361,6457,6459],{"class":2363,"line":6458},66,[2361,6460,4260],{},[2361,6462,6464],{"class":2363,"line":6463},67,[2361,6465,4266],{},[2361,6467,6469],{"class":2363,"line":6468},68,[2361,6470,3528],{"emptyLinePlaceholder":1657},[2361,6472,6474],{"class":2363,"line":6473},69,[2361,6475,6097],{},[2361,6477,6479],{"class":2363,"line":6478},70,[2361,6480,6102],{},[2361,6482,6484],{"class":2363,"line":6483},71,[2361,6485,3528],{"emptyLinePlaceholder":1657},[2361,6487,6489],{"class":2363,"line":6488},72,[2361,6490,6111],{},[1562,6492,2410],{"id":2409},[1570,6494,6495,6496,6499],{},"Once you have the script in place, hit \"Run\". If there are any errors, follow the instructions or see ",[1596,6497,6498],{"href":1409},"common errors"," for more details. If successful, you will see your post appear on Bluesky - congrats!",[1562,6501,2430],{"id":2429},[1570,6503,6504,6505,1696],{},"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 ",[1596,6506,1971],{"href":1970},[2445,6508,6509],{},"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":1640,"searchDepth":1641,"depth":1641,"links":6511},[6512,6513,6519,6520],{"id":2181,"depth":1644,"text":2182},{"id":5691,"depth":1644,"text":5692,"children":6514},[6515,6516,6517,6518],{"id":5707,"depth":1641,"text":5708},{"id":5889,"depth":1641,"text":5890},{"id":6114,"depth":1641,"text":6115},{"id":6147,"depth":1641,"text":6148},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":1740,"format":1729,"intent_type":2682,"intent":2683,"tags":6523,"platfrom":6524},[2685,2949],[6525],"Bluesky","\u002Fguides\u002Fbluesky",{"title":5645,"description":6521},"guides\u002Fbluesky","uSOGo6o9AUiUB0USc9agE-krmAXL848Y7oQsur_UCcI",{"id":6531,"title":6532,"body":6533,"date":1651,"description":6734,"extension":1653,"meta":6735,"navigation":1657,"order":1651,"path":6739,"seo":6740,"stem":6741,"__hash__":6742},"guides\u002Fguides\u002Fcapture-network-requests.md","How to capture network requests from a page",{"type":1555,"value":6534,"toc":6728},[6535,6537,6540,6542,6545,6549,6565,6678,6695,6703,6705,6717,6719,6725],[1567,6536],{},[1570,6538,6539],{},"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.",[1562,6541,2182],{"id":2181},[1570,6543,6544],{},"To get started, create a new automation.",[1562,6546,6548],{"id":6547},"capturing-network-requests","Capturing network requests",[1570,6550,6551,6552,6554,6555,6557,6558,6561,6562,6564],{},"As the first step in your automation, add a ",[1596,6553,1043],{"href":1044}," step. Then, add a ",[1596,6556,3928],{"href":1226}," step to your automation. The following will return an array of arrays that contains the ",[1740,6559,6560],{},"entryType"," and the ",[1740,6563,3639],{}," of the entries.",[2353,6566,6568],{"className":2390,"code":6567,"language":2392,"meta":1640,"style":1640},"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",[1740,6569,6570,6584,6588,6593,6616,6620,6625,6646,6657,6662,6666,6671],{"__ignoreMap":1640},[2361,6571,6572,6575,6578,6581],{"class":2363,"line":2364},[2361,6573,6574],{"class":3616},"var",[2361,6576,6577],{"class":2402}," resources ",[2361,6579,6580],{"class":3616},"=",[2361,6582,6583],{"class":2402}," [];\n",[2361,6585,6586],{"class":2363,"line":1644},[2361,6587,3528],{"emptyLinePlaceholder":1657},[2361,6589,6590],{"class":2363,"line":1641},[2361,6591,6592],{"class":4545},"\u002F\u002F Grab the resources\n",[2361,6594,6595,6597,6600,6602,6605,6608,6610,6613],{"class":2363,"line":3525},[2361,6596,3942],{"class":3616},[2361,6598,6599],{"class":3512}," entries",[2361,6601,3948],{"class":3616},[2361,6603,6604],{"class":2402}," window.performance.",[2361,6606,6607],{"class":4003},"getEntriesByType",[2361,6609,4169],{"class":2402},[2361,6611,6612],{"class":2371},"\"resource\"",[2361,6614,6615],{"class":2402},");\n",[2361,6617,6618],{"class":2363,"line":3531},[2361,6619,3528],{"emptyLinePlaceholder":1657},[2361,6621,6622],{"class":2363,"line":3603},[2361,6623,6624],{"class":4545},"\u002F\u002F Loop through the PerformanceEntry objects that were returned, add these to the `resources` array.\n",[2361,6626,6627,6630,6633,6636,6639,6642,6644],{"class":2363,"line":3682},[2361,6628,6629],{"class":2402},"entries.",[2361,6631,6632],{"class":4003},"forEach",[2361,6634,6635],{"class":2402},"((",[2361,6637,6638],{"class":2367},"entry",[2361,6640,6641],{"class":2402},") ",[2361,6643,4015],{"class":3616},[2361,6645,4018],{"class":2402},[2361,6647,6648,6651,6654],{"class":2363,"line":3688},[2361,6649,6650],{"class":2402},"    resources.",[2361,6652,6653],{"class":4003},"push",[2361,6655,6656],{"class":2402},"([entry.entryType, entry.name]);\n",[2361,6658,6659],{"class":2363,"line":3694},[2361,6660,6661],{"class":2402},"})\n",[2361,6663,6664],{"class":2363,"line":3717},[2361,6665,3528],{"emptyLinePlaceholder":1657},[2361,6667,6668],{"class":2363,"line":3770},[2361,6669,6670],{"class":4545},"\u002F\u002F Return the data\n",[2361,6672,6673,6675],{"class":2363,"line":3784},[2361,6674,4597],{"class":3616},[2361,6676,6677],{"class":2402}," resources;\n",[1570,6679,6680,6681,6684,6685,6690,6691,1696],{},"The ",[1740,6682,6683],{},"window.performance.getEntriesByType(\"resource\")"," will return an array of ",[1596,6686,6689],{"href":6687,"rel":6688},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FPerformanceEntry",[3874],"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: ",[1596,6692,6694],{"href":6687,"rel":6693},[3874],"developer.mozilla.org",[1570,6696,6697,6698,6700,6701,2862],{},"You'll find the data retrieved in the ",[1740,6699,4607],{}," data token. This can be used in later steps of your automation, for example, written to a Google Sheet using the ",[1596,6702,4924],{"href":1214},[1562,6704,2410],{"id":2409},[1570,6706,6707,6708,6710,6711,6713,6714,6716],{},"To test, ensure that you have a URL set within the \"Go to page\" step. Next, you can use the ",[1596,6709,4614],{"href":980}," step, or the ",[1596,6712,4924],{"href":1214}," step to output the ",[1740,6715,4607],{}," data token that should contain the data regarding the network requests that have been captured.",[1562,6718,2430],{"id":2429},[1570,6720,6721,6722,1696],{},"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 ",[1596,6723,4945],{"href":4943,"rel":6724},[3874],[2445,6726,6727],{},"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":1640,"searchDepth":1641,"depth":1641,"links":6729},[6730,6731,6732,6733],{"id":2181,"depth":1644,"text":2182},{"id":6547,"depth":1644,"text":6548},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to capture network requests from a page using an axiom.ai automation",{"type":1740,"format":1729,"intent_type":2154,"intent":5637,"tags":6736,"platfrom":6738},[6737],"network",[3387],"\u002Fguides\u002Fcapture-network-requests",{"title":6532,"description":6734},"guides\u002Fcapture-network-requests","JsO_-iPRJHagJQUyy7vbL4Te9w9V9n4dCxm6lj_4xOY",{"id":6744,"title":6745,"body":6746,"date":1651,"description":7432,"extension":1653,"meta":7433,"navigation":1657,"order":1651,"path":5011,"seo":7436,"stem":7437,"__hash__":7438},"guides\u002Fguides\u002Fcerebro.md","How to download ASIN data from Cerebro into a Google Sheet",{"type":1555,"value":6747,"toc":7423},[6748,6750,6762,6767,6778,6781,6790,6792,6794,6804,6836,6840,6842,6845,6852,7241,7244,7249,7253,7255,7267,7273,7299,7303,7305,7313,7365,7369,7374,7376,7378,7400,7410,7412],[1567,6749],{},[1570,6751,6752,6753,6757,6758,6761],{},"Cerebro is a tool from ",[1681,6754,6755],{},[1596,6756,4995],{"href":4994}," that allows Amazon sellers to conduct ",[1681,6759,6760],{},"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.",[2227,6763],{"src":6764,"className":6765,"alt":6766},"\u002Fdocs\u002Fguides\u002Fcerebro-search-field.webp",[5001],"Atuomate data entry into the Cerebro search field.",[1570,6768,6769,6770,6773,6774,6777],{},"In this guide, you'll learn how to use a bot to load the ",[1681,6771,6772],{},"Cerebro homepage",", enter 10 ASINs into the search field, and click ",[1681,6775,6776],{},"\"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.",[1570,6779,6780],{},"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.",[1570,6782,6783,6784,4912,6786,1696],{},"Check out our other Helium10 guides if you're interested in automating ",[1596,6785,5576],{"href":5015},[1596,6787,6789],{"href":6788},"\u002Fguides\u002FMagnet","Magnet",[1562,6791,2182],{"id":2181},[1567,6793],{},[1570,6795,6796,6797,6799,6800,6803],{},"To begin, create a ",[1681,6798,5528],{}," and add two tabs: one for ",[1681,6801,6802],{},"ASINs"," and another for storing extracted data.",[1729,6805,6806],{},[2191,6807,6808,6817,6827],{},[1580,6809,6810,6812,6813,6816],{},[1681,6811,5029],{}," If you're logged into Google, type ",[1740,6814,6815],{},"sheet.new"," in your browser to quickly create a new sheet.",[1580,6818,6819,5553,6821,6824,6825,1696],{},[1681,6820,5035],{},[1681,6822,6823],{},"ASIN numbers"," into the first tab, column ",[1681,6826,5163],{},[1580,6828,6829,6831,6832,6835],{},[1681,6830,5041],{}," Name the second tab ",[1681,6833,6834],{},"\"ASIN data\""," and leave it blank.",[1562,6837,6839],{"id":6838},"how-to-automate-extracting-the-asin-data","How to automate extracting the ASIN data",[1567,6841],{},[1570,6843,6844],{},"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.",[1570,6846,5064,6847,5068,6850],{},[1596,6848,2153],{"href":6849,"download":1657},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_helium10_cerebro.json",[1596,6851,5071],{"href":849},[1729,6853,6854],{},[1577,6855,6856,6882,6901,6918,6948,6971,7004,7038,7056,7076,7114,7131,7157,7191,7221],{},[1580,6857,6858,1738,6860,6862],{},[1681,6859,1737],{},[1740,6861,1742],{},[1577,6863,6864,6868,6873],{},[1580,6865,6866,5088],{},[1740,6867,1749],{},[1580,6869,6870,6872],{},[1740,6871,1755],{},": Choose the tab containing the ASINs.",[1580,6874,6875,6878,6879,6881],{},[1740,6876,6877],{},"Last cell",": Enter ",[1740,6880,5442],{},", the maximum number of ASINs we can search per loop.",[1580,6883,6884,1738,6886,6888],{},[1681,6885,1761],{},[1740,6887,1043],{},[1577,6889,6890],{},[1580,6891,6892,5126,6894,5346,6897,5169],{},[1740,6893,1779],{},[1740,6895,6896],{},"\"members.helium10.com\u002Fcerebro\u002Famazon\u002Fview\u002Fxxxxxxxx?accountId=xxxxxxx\"",[2227,6898],{"src":6899,"alt":6900},"\u002Fdocs\u002Fguides\u002Fgoto-page-cerebro.webp","axiom.ai using the go-to page step to load the Cerebro tool",[1580,6902,6903,1738,6905,6907],{},[1681,6904,5375],{},[1740,6906,667],{},[1577,6908,6909],{},[1580,6910,6911,1780,6913,5108,6915,6917],{},[1740,6912,667],{},[1740,6914,1783],{},[1740,6916,1787],{},". The loop step will now iterate through the ASINs in the Google Sheet.",[1580,6919,6920,1738,6922,6924],{},[1681,6921,5414],{},[1740,6923,293],{},[1577,6925,6926,6935],{},[1580,6927,6928,1780,6930,5108,6932,6934],{},[1740,6929,2587],{},[1740,6931,1783],{},[1740,6933,1787],{}," to pass the ASIN numbers from the sheet.",[1580,6936,6937,6940,6941,6943,6944,5169],{},[1740,6938,6939],{},"Select column",": Choose column ",[1740,6942,5163],{}," in the preview.\n",[2227,6945],{"src":6946,"alt":6947},"\u002Fdocs\u002Fguides\u002Fcerebro-enter-text-axiom-ai.webp","axiom.ai using the enter text step to enter ASINs in the Cerebro search field",[1580,6949,6950,1738,6953,6956],{},[1681,6951,6952],{},"5.0",[1740,6954,6955],{},"Press key(s)",[1577,6957,6958],{},[1580,6959,6960,6963,6964,6967,6968,1696],{},[1740,6961,6962],{},"Key",": Press ",[1740,6965,6966],{},"Record",", then ",[1740,6969,6970],{},"Tab",[1580,6972,6973,1738,6976,6978],{},[1681,6974,6975],{},"6.0",[1740,6977,5254],{},[1577,6979,6980,6991],{},[1580,6981,6982,1780,6984,6986,6987,6990],{},[1740,6983,1803],{},[1740,6985,1803],{},", then click on the ",[1740,6988,6989],{},"Get Keywords"," button.",[1580,6992,6993,6995,6996,6998,6999,5271,7002,1696],{},[1740,6994,5266],{},": In the selector tool, click ",[1740,6997,5266],{},", then tick ",[1740,7000,7001],{},"Use element text instead of HTML",[1740,7003,5274],{},[1580,7005,7006,1738,7009,7011],{},[1681,7007,7008],{},"7.0",[1740,7010,5254],{},[1577,7012,7013,7028],{},[1580,7014,7015,1780,7017,5263,7019,7021,7022,4912,7025,1696],{},[1740,7016,1803],{},[1740,7018,1803],{},[1740,7020,5266],{}," and insert ",[1740,7023,7024],{},"[data-testid=\"runnewsearch\"]",[1740,7026,7027],{},"[data-testid=\"loadfromhistory\"]",[1580,7029,7030,7033,7034,5169],{},[1740,7031,7032],{},"Optional Click",": Tick this option, as the pop-up does not always appear.\n",[2227,7035],{"src":7036,"alt":7037},"\u002Fdocs\u002Fguides\u002Fcerebro-dialog-history.webp","axiom.ai interacting with dialog in Cerebro during bot run",[1580,7039,7040,1738,7043,7045],{},[1681,7041,7042],{},"8.0",[1740,7044,349],{},[1577,7046,7047],{},[1580,7048,7049,1871,7052,7055],{},[1740,7050,7051],{},"Wait time",[1740,7053,7054],{},"7000"," to make the bot wait 7 seconds. You may need to experiment with wait time.",[1580,7057,7058,1738,7061,7063],{},[1681,7059,7060],{},"9.0",[1740,7062,5254],{},[1577,7064,7065],{},[1580,7066,7067,1780,7069,5263,7071,7021,7073,1696],{},[1740,7068,1803],{},[1740,7070,1803],{},[1740,7072,5266],{},[1740,7074,7075],{},"#cerebro-amazon-single-com_wrapper button[data-testid=\"exportdata\"]",[1580,7077,7078,1738,7081,7084],{},[1681,7079,7080],{},"10.0",[1740,7082,7083],{},"Download file",[1577,7085,7086,7104,7109],{},[1580,7087,7088,1780,7090,7092,7093,5267,7095,7097,7098,7101,7102,1696],{},[1740,7089,1803],{},[1740,7091,1803],{},", then click ",[1740,7094,5266],{},[1740,7096,7001],{},". Insert ",[1740,7099,7100],{},"\"...as a CSV file.\""," Then click ",[1740,7103,5274],{},[1580,7105,7106,7108],{},[1740,7107,3268],{},": Set a folder path to download into.",[1580,7110,7111,7113],{},[1740,7112,3274],{},": Enter a name to save the file as.",[1580,7115,7116,1738,7119,7121],{},[1681,7117,7118],{},"11.0",[1740,7120,349],{},[1577,7122,7123],{},[1580,7124,7125,1871,7127,7130],{},[1740,7126,7051],{},[1740,7128,7129],{},"4000"," to make the bot wait 4 seconds. You may need to experiment with wait time.",[1580,7132,7133,1738,7136,7139],{},[1681,7134,7135],{},"12.0",[1740,7137,7138],{},"Import CSV File",[1577,7140,7141],{},[1580,7142,7143,7146,7147,5108,7149,7152,7153,5169],{},[1740,7144,7145],{},"Import CSV",": Insert the folder path, then click ",[1740,7148,1783],{},[1740,7150,7151],{},"File-download-data"," to add the file name to the path.\n",[2227,7154],{"src":7155,"alt":7156},"\u002Fdocs\u002Fguides\u002Faxiom-ai-set-file-path-import-csv.webp","axiom.ai setting file path to import CSV",[1580,7158,7159,1738,7162,7164],{},[1681,7160,7161],{},"13.0",[1740,7163,4924],{},[1577,7165,7166,7170,7175,7184],{},[1580,7167,7168,5384],{},[1740,7169,1749],{},[1580,7171,7172,7174],{},[1740,7173,5389],{},": Choose the tab where you want to write the ASIN data.",[1580,7176,7177,1780,7179,5397,7181,1696],{},[1740,7178,2109],{},[1740,7180,1783],{},[1740,7182,7183],{},"Imported-csv",[1580,7185,7186,1908,7188,7190],{},[1740,7187,5405],{},[1740,7189,5408],{}," to append new data without deleting the existing data.",[1580,7192,7193,1738,7196,7198],{},[1681,7194,7195],{},"14.0",[1740,7197,1928],{},[1577,7199,7200,7204,7209,7215],{},[1580,7201,7202,5384],{},[1740,7203,1749],{},[1580,7205,7206,7208],{},[1740,7207,5389],{},": Choose the tab containing the ASIN numbers.",[1580,7210,7211,5432,7213,1696],{},[1740,7212,5431],{},[1740,7214,1813],{},[1580,7216,7217,1810,7219,1696],{},[1740,7218,5439],{},[1740,7220,5442],{},[1580,7222,7223,1738,7226,7228],{},[1681,7224,7225],{},"15.0",[1740,7227,1070],{},[1577,7229,7230,7235],{},[1580,7231,7232,5384],{},[1740,7233,7234],{},"Jump to step",[1580,7236,7237,7240],{},[1740,7238,7239],{},"Maximum cycles",": Set the maximum number of times the bot should repeat the process.",[1570,7242,7243],{},"The Cerebro automation, when completed, should resemble the diagram below.",[2227,7245],{"src":7246,"className":7247,"alt":7248},"\u002Fdocs\u002Fguides\u002Fhelium10-cerebro-axiom-bot-design-pattern.webp",[5450],"axiom.ai design pattern for building a bot to automate dat extraction from helium10 tool Cerebro",[1562,7250,7252],{"id":7251},"testing-your-cerebro-automation","Testing your Cerebro automation",[1567,7254],{},[1570,7256,5458,7257,5462,7259,5466,7261,7263,7264,1696],{},[1681,7258,4995],{},[1681,7260,5465],{},[1681,7262,5052],{}," extension to start extracting ",[1681,7265,7266],{},"ASIN data",[1611,7268,7270],{"id":7269},"issues-you-may-encounter",[1681,7271,7272],{},"Issues you may encounter:",[2191,7274,7275,7285],{},[1580,7276,7277,7280,7281,7284],{},[1681,7278,7279],{},"Click elements not found:"," If elements are not being clicked, you may need to reselect them. Changing ",[1681,7282,7283],{},"marketplaces"," can sometimes affect selectors.",[1580,7286,7287,1738,7290,7292,7293,7296,7297,1696],{},[1681,7288,7289],{},"Keyword data not loading in time:",[1681,7291,5012],{}," can sometimes be slow to load data. You may need to adjust the ",[1681,7294,7295],{},"wait time"," in ",[1681,7298,5497],{},[1562,7300,7302],{"id":7301},"try-the-cerebro-template","Try the Cerebro template",[1567,7304],{},[1570,7306,5505,7307,5508,7309,5512,7311,5515],{},[1681,7308,5052],{},[1681,7310,4995],{},[1681,7312,2153],{},[2191,7314,7315,7321,7333,7344,7358],{},[1580,7316,7317,5525,7319,1696],{},[1681,7318,5524],{},[1681,7320,5528],{},[1580,7322,7323,7326,7327,7329,7330,1696],{},[1681,7324,7325],{},"Step 2:"," Insert the ",[1681,7328,5537],{}," to the ",[1681,7331,7332],{},"Cerebro landing page",[1580,7334,7335,7326,7338,2094,7341,1696],{},[1681,7336,7337],{},"Step 8:",[1681,7339,7340],{},"download path",[1681,7342,7343],{},"file name",[1580,7345,7346,7349,7350,7353,7354,7357],{},[1681,7347,7348],{},"Step 10:"," Set the ",[1681,7351,7352],{},"import path",", including the ",[1681,7355,7356],{},"download file token"," (contains the file name).",[1580,7359,7360,5525,7363,1696],{},[1681,7361,7362],{},"Steps 11 and 12:",[1681,7364,5528],{},[1570,7366,5558,7367,5562],{},[1681,7368,5561],{},[1570,7370,5565,7371],{},[1596,7372,7373],{"href":6849,"download":1657},"Cerebro template.",[1562,7375,2430],{"id":2429},[1567,7377],{},[1570,7379,7380,7381,7383,7384,7387,7388,7391,7392,7395,7396,7399],{},"Extracting data in ",[1681,7382,5012],{}," isn’t always straightforward, but it's possible with automation. For example, ",[1681,7385,7386],{},"changing marketplaces"," can affect the ",[1681,7389,7390],{},"CSS selectors"," used to click on elements. I also found that, due to the ",[1681,7393,7394],{},"large quantity of data",", it's ",[1681,7397,7398],{},"faster to download the CSV and import it into a Google Sheet"," rather than scrape the data page by page.",[1570,7401,7402,7403,5606,7405,7409],{},"If you need help automating ",[1681,7404,4995],{},[1681,7406,7407],{},[1596,7408,5612],{"href":5611},", and we’ll help you create an automation.",[1567,7411],{},[1570,7413,7414],{},[2441,7415,5617,7416,5621,7419,4912,7421,5626],{},[1681,7417,7418],{},"January 22, 2025",[1681,7420,4995],{},[1681,7422,5052],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":7424},[7425,7426,7427,7430,7431],{"id":2181,"depth":1644,"text":2182},{"id":6838,"depth":1644,"text":6839},{"id":7251,"depth":1644,"text":7252,"children":7428},[7429],{"id":7269,"depth":1641,"text":7272},{"id":7301,"depth":1644,"text":7302},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":2682,"intent":5637,"tags":7434,"platfrom":7435},[2158,2689],[4995],{"title":6745,"description":7432},"guides\u002Fcerebro","NvIDdezwXPTDtWE5l0WI_FfqwLVMWwvEpV3u3KJbqVg",{"id":7440,"title":7441,"body":7442,"date":2144,"description":7745,"extension":1653,"meta":7746,"navigation":1657,"order":1651,"path":7750,"seo":7751,"stem":7752,"__hash__":7753},"guides\u002Fguides\u002Fchatgpt-web-scraper.md","How to scrape data with ChatGPT from any website",{"type":1555,"value":7443,"toc":7737},[7444,7446,7449,7451,7453,7466,7470,7480,7485,7487,7491,7498,7650,7654,7656,7658,7662,7664,7666],[1567,7445],{},[1570,7447,7448],{},"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,7450],{},[1562,7452,1676],{"id":1675},[1570,7454,1679,7455,2718,7457,7460,7461,1692,7464,1696],{},[1681,7456,6815],{},[1681,7458,7459],{},"ChatGPT Scrape","' and set up a tab called ",[1681,7462,7463],{},"Links",[1681,7465,2109],{},[1562,7467,7469],{"id":7468},"install-the-chatgpt-template","Install the ChatGPT template",[1570,7471,7472,7473,7476,7477,1711],{},"To install this ChatGPT template click ",[1681,7474,7475],{},"Install template",". If you're a new user, you'll have to click ",[1681,7478,7479],{},"Install Chrome extension",[1570,7481,1714,7482,1696],{},[1681,7483,7484],{},"start",[1570,7486,1720],{},[1562,7488,7490],{"id":7489},"configure-your-chatgpt-scraper-in-five-easy-steps","Configure your ChatGPT scraper in Five easy steps",[1570,7492,7493,7494,7497],{},"Please note in ",[1740,7495,7496],{},"step 2.2 Get data from bot's current page"," you need to select a single block of content with the selector tool.",[1729,7499,7500],{},[1577,7501,7502,7522],{},[1580,7503,7504,1738,7506,7508],{},[1681,7505,1737],{},[1740,7507,1742],{},[1577,7509,7510,7514],{},[1580,7511,7512,1750],{},[1740,7513,1749],{},[1580,7515,7516,7518,7519,1696],{},[1740,7517,1755],{},": Choose the sheet tab called ",[1740,7520,7521],{},"\"Amazon product links\"",[1580,7523,7524,1738,7526,7528],{},[1681,7525,1761],{},[1740,7527,667],{},[1577,7529,7530,7545,7564,7592,7622],{},[1580,7531,7532,1738,7534,7536],{},[1681,7533,1770],{},[1740,7535,1043],{},[1577,7537,7538],{},[1580,7539,7540,3251,7542,7544],{},[1740,7541,1779],{},[1740,7543,1787],{},", and choose the column with the links.",[1580,7546,7547,1738,7549,7551],{},[1681,7548,1793],{},[1740,7550,1796],{},[1577,7552,7553,7558],{},[1580,7554,7555,7557],{},[1740,7556,1803],{},": Point and click to select the data you wish to scrape using a single selector.",[1580,7559,7560,1810,7562,1696],{},[1740,7561,1809],{},[1740,7563,1813],{},[1580,7565,7566,1738,7568,7571],{},[1681,7567,1818],{},[1740,7569,7570],{},"Extract data with ChatGPT",[1577,7572,7573,7577,7584],{},[1580,7574,7575,1829],{},[1740,7576,1828],{},[1580,7578,7579,1871,7581,1696],{},[1740,7580,2109],{},[1740,7582,7583],{},"scrape-data",[1580,7585,7586,7588,7589,7591],{},[1740,7587,1851],{},": Enter values to extract (e.g. ",[1740,7590,1855],{},").",[1580,7593,7594,1738,7596,7598],{},[1681,7595,1860],{},[1740,7597,4924],{},[1577,7599,7600,7604,7608,7615],{},[1580,7601,7602,1750],{},[1740,7603,1749],{},[1580,7605,7606,1902],{},[1740,7607,1755],{},[1580,7609,7610,1908,7612,1696],{},[1740,7611,1907],{},[1740,7613,7614],{},"chatgpt-data",[1580,7616,7617,1810,7619,1696],{},[1740,7618,1916],{},[1740,7620,7621],{},"\"Add to existing data\"",[1580,7623,7624,1738,7626,7628],{},[1681,7625,1888],{},[1740,7627,1928],{},[1577,7629,7630,7634,7638,7644],{},[1580,7631,7632,2758],{},[1740,7633,1749],{},[1580,7635,7636,1939],{},[1740,7637,1755],{},[1580,7639,7640,1810,7642,1696],{},[1740,7641,1944],{},[1740,7643,1813],{},[1580,7645,7646,1810,7648,1696],{},[1740,7647,1951],{},[1740,7649,1813],{},[1562,7651,7653],{"id":7652},"testing-and-running-your-chatgpt-web-scraper","Testing and running your ChatGPT web scraper",[1570,7655,1960],{},[1562,7657,1964],{"id":1963},[1570,7659,1967,7660,1972],{},[1596,7661,1971],{"href":1970},[1562,7663,1398],{"id":1975},[1570,7665,1978],{},[1729,7667,7668],{},[1577,7669,7670,7686,7696,7711,7726],{},[1580,7671,7672,7675,7677,7678,7680,7681,7683,7684,2003],{},[1681,7673,7674],{},"Want to set a number of loops?",[1989,7676],{},"\nSet a ",[1740,7679,1998],{}," in the ",[1740,7682,1742],{}," step — for example, ",[1740,7685,2002],{},[1580,7687,7688,7691,1991,7693,7695],{},[1681,7689,7690],{},"Not scraping content correctly?",[1989,7692],{},[1740,7694,1796],{},", select a single block of content using the selector tool.",[1580,7697,7698,7701,7703,7704,7706,7707,7680,7709,2862],{},[1681,7699,7700],{},"Want to scrape the whole page?",[1989,7702],{},"\nUse a ",[1596,7705,2025],{"href":1383}," like ",[1740,7708,2029],{},[1740,7710,1796],{},[1580,7712,7713,7716,7718,7719,2041,7721,2045,7723,7725],{},[1681,7714,7715],{},"Scrape running slowly?",[1989,7717],{},"\nToggle ",[1740,7720,2040],{},[1740,7722,2044],{},[1740,7724,1813],{}," in the same step.",[1580,7727,7728,7731,2120,7733,2110,7735],{},[1681,7729,7730],{},"Data not showing up in ChatGPT?",[1989,7732],{},[1740,7734,2109],{},[1740,7736,7583],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":7738},[7739,7740,7741,7742,7743,7744],{"id":1675,"depth":1644,"text":1676},{"id":7468,"depth":1644,"text":7469},{"id":7489,"depth":1644,"text":7490},{"id":7652,"depth":1644,"text":7653},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":2679,"level":2149,"video":7747,"templateId":6389,"type":2152,"format":2153,"intent_type":3384,"intent":2155,"tags":7748,"platfrom":7749},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F8Llq6EYiSuo",[2158,2689],[739],"\u002Fguides\u002Fchatgpt-web-scraper",{"title":7441,"description":7745},"guides\u002Fchatgpt-web-scraper","YpEhc1e5YckB0bBSPLiATp8_oI0B1PtAh1Fb0D6gJn0",{"id":7755,"title":7756,"body":7757,"date":1651,"description":8159,"extension":1653,"meta":8160,"navigation":1657,"order":1651,"path":8165,"seo":8166,"stem":8167,"__hash__":8168},"guides\u002Fguides\u002Fcheck-for-login.md","How to automate checking if a site requires a login",{"type":1555,"value":7758,"toc":8149},[7759,7761,7772,7774,7780,7784,7791,7810,7814,7824,7828,7831,7844,7861,7865,7874,7908,7930,7961,7965,7969,7976,7982,7986,7993,8061,8064,8129,8131,8134,8143],[1567,7760],{},[1570,7762,7763,7764,7767,7768,7771],{},"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 ",[1681,7765,7766],{},"\"Log in.\""," By using an ",[1681,7769,7770],{},"\"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,7773],{},[1570,7775,7776,7777,7779],{},"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 ",[1596,7778,5688],{"href":638}," guide. For this example, we are going to store credentials within Google Sheets.",[1562,7781,7783],{"id":7782},"creating-your-automation","Creating your automation",[1570,7785,7786,7787,7790],{},"Create a new automation by clicking \"New automation\", and then use the ",[1596,7788,7789],{"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:",[1729,7792,7793],{},[2191,7794,7795,7798,7801,7804,7807],{},[1580,7796,7797],{},"Navigate to the page.",[1580,7799,7800],{},"Check if the page is a login page.",[1580,7802,7803],{},"Enter your email.",[1580,7805,7806],{},"Enter your password.",[1580,7808,7809],{},"Click \"login\".",[1611,7811,7813],{"id":7812},"navigate-to-the-site","Navigate to the site",[1570,7815,7816,7817,7819,7820,7823],{},"Use the ",[1596,7818,1043],{"href":1044}," step to navigate to the site that you wish to automate - this does not have to be the ",[1681,7821,7822],{},"\"login\""," page as sites will often redirect to it if a login is required.",[1611,7825,7827],{"id":7826},"check-if-the-page-is-a-login-page","Check if the page is a login page",[1570,7829,7830],{},"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.",[1570,7832,6680,7833,7836,7837,4912,7840,7843],{},[1596,7834,7835],{"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 ",[1681,7838,7839],{},"login\"",[1681,7841,7842],{},"sign-in\"",", for example.",[1570,7845,6680,7846,7848,7849,7852,7853,7856,7857,7860],{},[1596,7847,1796],{"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 ",[1681,7850,7851],{},"\"Login\""," in it's contents. We recommend encapsulating this with a ",[1596,7854,7855],{"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 ",[1681,7858,7859],{},"\"Try \u002F Catch\""," step can catch this error.",[1611,7862,7864],{"id":7863},"checking-the-returned-output","Checking the returned output",[1570,7866,6680,7867,7869,7870,7873],{},[1596,7868,7835],{"href":956}," step will return the current URL of the bot, you will need to use an ",[1596,7871,7872],{"href":1048},"If condition is true, run steps"," step to check this value. Add the step and configure as described below:",[1729,7875,7876],{},[1577,7877,7878,7893],{},[1580,7879,7880,1738,7882,7885],{},[1681,7881,1737],{},[1740,7883,7884],{},"Data to check",[1577,7886,7887],{},[1580,7888,7889,7892],{},[1740,7890,7891],{},"[current-url]",": Select this as the value to evaluate.",[1580,7894,7895,1738,7897,7900],{},[1681,7896,1761],{},[1740,7898,7899],{},"Condition to check",[1577,7901,7902],{},[1580,7903,7904,7907],{},[1740,7905,7906],{},"Login",": Enter the text value you want to match.",[1570,7909,7910,7911,7913,7914,7916,7917,7920,7921,7923,7924,7926,7927,7929],{},"If you have set up the ",[1596,7912,1796],{"href":1040}," step inside a ",[1681,7915,7859],{}," step, you will need to insert any further steps related to the login into the ",[1681,7918,7919],{},"\"try\""," portion of this step. You will need to use an ",[1596,7922,7872],{"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 ",[1681,7925,7919],{}," portion of the ",[1681,7928,7859],{}," step, under the \"Get data from bot's current page\" step and configure as described below:",[1729,7931,7932],{},[1577,7933,7934,7946],{},[1580,7935,7936,1738,7938,7940],{},[1681,7937,1737],{},[1740,7939,7884],{},[1577,7941,7942],{},[1580,7943,7944,7892],{},[1740,7945,1845],{},[1580,7947,7948,1738,7950,7952],{},[1681,7949,1761],{},[1740,7951,7899],{},[1577,7953,7954],{},[1580,7955,7956,7958,7959,1696],{},[1740,7957,7906],{},": Enter the text value to check for, for example ",[1681,7960,7851],{},[2227,7962],{"src":7963,"alt":7964},"\u002Fdocs\u002Fguides\u002Fif-condition-login.jpg","axiom.ai - if condition check for value",[1611,7966,7968],{"id":7967},"entering-credentials","Entering credentials",[1570,7970,7971,7972,7975],{},"Next, inside of the ",[1681,7973,7974],{},"\"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.",[1570,7977,7978,7979,7981],{},"Finally, use a ",[1596,7980,5254],{"href":924}," step to click the \"login\" button on the site to complete the login.",[1611,7983,7985],{"id":7984},"final-automation-structure","Final automation structure",[1570,7987,7988,7989,7992],{},"If you used the ",[1681,7990,7991],{},"\"Get bot's current URL\""," step, your automation should look similar to the structure below:",[1729,7994,7995],{},[1577,7996,7997,8004,8012,8053],{},[1580,7998,7999,1738,8001,8003],{},[1681,8000,1737],{},[1740,8002,1043],{},": Navigate to the login page.",[1580,8005,8006,1738,8008,8011],{},[1681,8007,1761],{},[1740,8009,8010],{},"Get bot's current URL",": Store the current page URL.",[1580,8013,8014,1738,8016,8018,8019],{},[1681,8015,5375],{},[1740,8017,7872],{},": Run the following steps only if the condition matches.\n",[1577,8020,8021,8033,8044],{},[1580,8022,8023,1738,8026,3625,8029,8032],{},[1681,8024,8025],{},"3.1",[1740,8027,8028],{},"Enter Text",[1740,8030,8031],{},"Email"," type your email address.",[1580,8034,8035,1738,8038,3625,8040,8043],{},[1681,8036,8037],{},"3.2",[1740,8039,8028],{},[1740,8041,8042],{},"Password"," type your password.",[1580,8045,8046,1738,8049,8052],{},[1681,8047,8048],{},"3.3",[1740,8050,8051],{},"Click Element",": Click the login button.",[1580,8054,8055,1738,8057,8060],{},[1681,8056,5414],{},[1740,8058,8059],{},"Continue flow",": Add any other steps here.",[1570,8062,8063],{},"If you used the \"Get data from bot's current page\" step, your automation should look similar to the structure below:",[1729,8065,8066],{},[1577,8067,8068,8074,8121],{},[1580,8069,8070,1738,8072,8003],{},[1681,8071,1737],{},[1740,8073,1043],{},[1580,8075,8076,1738,8078,8080,8081],{},[1681,8077,1761],{},[1740,8079,7855],{},": Run steps that may fail.\n",[1577,8082,8083,8090],{},[1580,8084,8085,1738,8087,8089],{},[1681,8086,1770],{},[1740,8088,1796],{},": Select login text.",[1580,8091,8092,1738,8094,5346,8097],{},[1681,8093,1793],{},[1740,8095,8096],{},"Catch",[1577,8098,8099,8107,8115],{},[1580,8100,8101,1738,8103,3625,8105,8032],{},[1681,8102,1818],{},[1740,8104,8028],{},[1740,8106,8031],{},[1580,8108,8109,1738,8111,3625,8113,8043],{},[1681,8110,1860],{},[1740,8112,8028],{},[1740,8114,8042],{},[1580,8116,8117,1738,8119,8052],{},[1681,8118,1888],{},[1740,8120,8051],{},[1580,8122,8123,1738,8125,8128],{},[1681,8124,5375],{},[1740,8126,8127],{},"Other steps",": Continue the flow as needed.",[1562,8130,2430],{"id":2429},[1570,8132,8133],{},"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.",[1570,8135,8136,8137,8139,8140,4959],{},"We would also recommend reviewing our documentation on managing ",[1596,8138,5688],{"href":638}," for further tips and tricks to use, including using your pre-existing login session in the cloud, see ",[1596,8141,8142],{"href":886},"Learn how to store cookies",[1570,8144,8145,8146,8148],{},"Some login activity may prompt the site to display a CAPTCHA challenge to continue, see our ",[1596,8147,735],{"href":736}," integration for more details on navigating sites with CAPTCHA enabled.",{"title":1640,"searchDepth":1641,"depth":1641,"links":8150},[8151,8158],{"id":7782,"depth":1644,"text":7783,"children":8152},[8153,8154,8155,8156,8157],{"id":7812,"depth":1641,"text":7813},{"id":7826,"depth":1641,"text":7827},{"id":7863,"depth":1641,"text":7864},{"id":7967,"depth":1641,"text":7968},{"id":7984,"depth":1641,"text":7985},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2683,"tags":8161,"platfrom":8163,"video":8164},[8162],"login",[3387],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FKZPOE8xisTM?rel=0&amp;","\u002Fguides\u002Fcheck-for-login",{"title":7756,"description":8159},"guides\u002Fcheck-for-login","Gp6bLGA8kKmhLnzh3lnrE73kiWexfahe6cH6I2s-xKQ",{"id":8170,"title":8171,"body":8172,"date":1651,"description":8621,"extension":1653,"meta":8622,"navigation":1657,"order":1651,"path":8627,"seo":8628,"stem":8629,"__hash__":8630},"guides\u002Fguides\u002Fcurl.md","How to use cURL to trigger an axiom.ai automation",{"type":1555,"value":8173,"toc":8612},[8174,8176,8179,8181,8183,8185,8203,8207,8209,8217,8289,8292,8321,8325,8327,8331,8333,8340,8552,8559,8561,8563,8570,8591,8597,8602,8604,8606,8609],[1567,8175],{},[1570,8177,8178],{},"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.",[1562,8180,2182],{"id":2181},[1567,8182],{},[1570,8184,2187],{},[2191,8186,8187,8193,8197],{},[1580,8188,8189,3415,8191,1696],{},[1681,8190,1628],{},[1596,8192,2201],{"href":2200},[1580,8194,8195,3422],{},[1681,8196,2206],{},[1580,8198,8199,3427,8201,1696],{},[1681,8200,2212],{},[1740,8202,2216],{},[1562,8204,8206],{"id":8205},"trigger-an-axiomai-automation-using-curl","Trigger an axiom.ai automation using cURL",[1567,8208],{},[1570,8210,8211,8212,8216],{},"Open your command line to get started, and use the following command to trigger your automation. You'll need the information from the ",[1596,8213,8215],{"href":8214},"#getting-started","getting started"," section of this guide.",[2353,8218,8220],{"className":3478,"code":8219,"language":3480,"meta":1640,"style":1640},"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",[1740,8221,8222],{"__ignoreMap":1640},[2361,8223,8224,8227,8230,8232,8235,8238,8241,8244,8247,8249,8251,8253,8255,8257,8260,8262,8264,8266,8268,8270,8272,8274,8276,8278,8280,8282,8284,8286],{"class":2363,"line":2364},[2361,8225,8226],{"class":2367},"curl",[2361,8228,8229],{"class":3512}," -X",[2361,8231,3705],{"class":2371},[2361,8233,8234],{"class":2371}," https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger",[2361,8236,8237],{"class":3512}," -H",[2361,8239,8240],{"class":2371}," \"Content-Type: application\u002Fjson\"",[2361,8242,8243],{"class":3512}," -d",[2361,8245,8246],{"class":2371}," \"{",[2361,8248,3617],{"class":3616},[2361,8250,3620],{"class":2371},[2361,8252,3617],{"class":3616},[2361,8254,3625],{"class":2371},[2361,8256,3617],{"class":3616},[2361,8258,8259],{"class":2371},"\u003CAPI_KEY>",[2361,8261,3617],{"class":3616},[2361,8263,3634],{"class":2371},[2361,8265,3617],{"class":3616},[2361,8267,3639],{"class":2371},[2361,8269,3617],{"class":3616},[2361,8271,3625],{"class":2371},[2361,8273,3617],{"class":3616},[2361,8275,3462],{"class":2371},[2361,8277,3617],{"class":3616},[2361,8279,3634],{"class":2371},[2361,8281,3617],{"class":3616},[2361,8283,3468],{"class":2371},[2361,8285,3617],{"class":3616},[2361,8287,8288],{"class":2371},": []\"}\"\n",[1570,8290,8291],{},"Let's break down this command:",[1577,8293,8294,8299,8305,8311],{},[1580,8295,8296,8298],{},[1740,8297,8226],{}," - the application we are triggering.",[1580,8300,8301,8304],{},[1740,8302,8303],{},"-X POST"," - the HTTP method to use.",[1580,8306,8307,8310],{},[1740,8308,8309],{},"-h \"Content-Type: application\u002Fjson\""," - the headers to pass along with the request.",[1580,8312,8313,8316,8317,1696],{},[1740,8314,8315],{},"-d \"{\\\"key\\\": \\\"\u003CAPI_KEY>\\\", \\\"name\\\": \\\"\u003CAUTOMATION_NAME>\\\", \\\"data\\\": []\"}"," - the data to send in the request, formatted as per our ",[1596,8318,8320],{"href":8319},"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Frequests","trigger guide",[1562,8322,8324],{"id":8323},"examples","Examples",[1567,8326],{},[1611,8328,8330],{"id":8329},"reporting-system-available-memory","Reporting system available memory",[1567,8332],{},[1570,8334,8335,8336,8339],{},"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 ",[1740,8337,8338],{},".bat"," file.",[2353,8341,8345],{"className":8342,"code":8343,"language":8344,"meta":1640,"style":1640},"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",[1740,8346,8347,8355,8359,8378,8403,8407,8429,8437,8447,8451,8473,8543,8547],{"__ignoreMap":1640},[2361,8348,8349,8352],{"class":2363,"line":2364},[2361,8350,8351],{"class":2367},"@echo",[2361,8353,8354],{"class":2371}," off\n",[2361,8356,8357],{"class":2363,"line":1644},[2361,8358,3528],{"emptyLinePlaceholder":1657},[2361,8360,8361,8364,8367,8369,8372,8375],{"class":2363,"line":1641},[2361,8362,8363],{"class":2367},"rem",[2361,8365,8366],{"class":2371}," Get",[2361,8368,3542],{"class":2371},[2361,8370,8371],{"class":2371}," free",[2361,8373,8374],{"class":2371}," memory",[2361,8376,8377],{"class":2371}," value\n",[2361,8379,8380,8383,8386,8389,8392,8395,8397,8400],{"class":2363,"line":3525},[2361,8381,8382],{"class":3616},"for",[2361,8384,8385],{"class":2402}," \u002Ff ",[2361,8387,8388],{"class":2371},"\"tokens=2 delims=:\"",[2361,8390,8391],{"class":2402}," %%f in (",[2361,8393,8394],{"class":2367},"'systeminfo ^| findstr \u002FC:\"Available Physical Memory\"'",[2361,8396,6641],{"class":2402},[2361,8398,8399],{"class":3616},"do",[2361,8401,8402],{"class":2402}," set freememory=%%f\n",[2361,8404,8405],{"class":2363,"line":3531},[2361,8406,3528],{"emptyLinePlaceholder":1657},[2361,8408,8409,8411,8414,8417,8420,8423,8426],{"class":2363,"line":3603},[2361,8410,8363],{"class":2367},[2361,8412,8413],{"class":2371}," Remove",[2361,8415,8416],{"class":2371}," any",[2361,8418,8419],{"class":2371}," commas",[2361,8421,8422],{"class":2371}," or",[2361,8424,8425],{"class":2371}," extra",[2361,8427,8428],{"class":2371}," spaces\n",[2361,8430,8431,8434],{"class":2363,"line":3682},[2361,8432,8433],{"class":3512},"set",[2361,8435,8436],{"class":2371}," freememory=%freememory:,=%\n",[2361,8438,8439,8441,8444],{"class":2363,"line":3688},[2361,8440,8433],{"class":3512},[2361,8442,8443],{"class":2371}," freememory=%freememory:",[2361,8445,8446],{"class":2371}," =%\n",[2361,8448,8449],{"class":2363,"line":3694},[2361,8450,3528],{"emptyLinePlaceholder":1657},[2361,8452,8453,8455,8457,8459,8461,8463,8465,8468,8470],{"class":2363,"line":3717},[2361,8454,8363],{"class":2367},[2361,8456,3700],{"class":2371},[2361,8458,8371],{"class":2371},[2361,8460,8374],{"class":2371},[2361,8462,3519],{"class":2371},[2361,8464,3542],{"class":2371},[2361,8466,8467],{"class":2371}," webhook",[2361,8469,3711],{"class":2371},[2361,8471,8472],{"class":2371}," curl\n",[2361,8474,8475,8477,8479,8481,8484,8486,8488,8490,8492,8494,8496,8498,8500,8502,8504,8506,8508,8510,8512,8514,8516,8518,8520,8522,8524,8526,8528,8530,8533,8535,8538,8540],{"class":2363,"line":3770},[2361,8476,8226],{"class":2367},[2361,8478,8229],{"class":3512},[2361,8480,3705],{"class":2371},[2361,8482,8483],{"class":2371}," \"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger\"",[2361,8485,8237],{"class":3512},[2361,8487,8240],{"class":2371},[2361,8489,8243],{"class":3512},[2361,8491,8246],{"class":2371},[2361,8493,3617],{"class":3616},[2361,8495,3620],{"class":2371},[2361,8497,3617],{"class":3616},[2361,8499,3625],{"class":2371},[2361,8501,3617],{"class":3616},[2361,8503,8259],{"class":2371},[2361,8505,3617],{"class":3616},[2361,8507,3634],{"class":2371},[2361,8509,3617],{"class":3616},[2361,8511,3639],{"class":2371},[2361,8513,3617],{"class":3616},[2361,8515,3625],{"class":2371},[2361,8517,3617],{"class":3616},[2361,8519,3462],{"class":2371},[2361,8521,3617],{"class":3616},[2361,8523,3634],{"class":2371},[2361,8525,3617],{"class":3616},[2361,8527,3468],{"class":2371},[2361,8529,3617],{"class":3616},[2361,8531,8532],{"class":2371},":  [[",[2361,8534,3617],{"class":3616},[2361,8536,8537],{"class":2371},"%freememory%",[2361,8539,3617],{"class":3616},[2361,8541,8542],{"class":2371},"]]}\"\n",[2361,8544,8545],{"class":2363,"line":3784},[2361,8546,3528],{"emptyLinePlaceholder":1657},[2361,8548,8549],{"class":2363,"line":3160},[2361,8550,8551],{"class":2367},"pause\n",[1570,8553,8554,8555,8558],{},"You'll need to add a ",[1596,8556,8557],{"href":1111},"receive data from another app"," step into your axiom.ai automation to be able to use the data within your automation.",[1562,8560,2410],{"id":2409},[1567,8562],{},[1570,8564,8565,8566,8569],{},"To test your workflow, hit ",[1740,8567,8568],{},"ENTER"," on your command. If successful, you will receive a link to open the automation run in your browser, for example",[2353,8571,8573],{"className":3478,"code":8572,"language":3480,"meta":1640,"style":1640},"{\"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",[1740,8574,8575],{"__ignoreMap":1640},[2361,8576,8577,8580,8583,8586,8589],{"class":2363,"line":2364},[2361,8578,8579],{"class":2402},"{",[2361,8581,8582],{"class":2367},"\"OPEN LINK IN BROWSER\"",[2361,8584,8585],{"class":3512},":",[2361,8587,8588],{"class":2367},"\"https:\\\u002F\\\u002Fvnc.axiom.ai\\\u002Fvnc_lite.html?host=c-0027-v4-proxy.axiom.ai&port=443&autoconnect=true&password=xxxxxxxx&scale=local\"",[2361,8590,4266],{"class":2367},[1570,8592,8593,8594,8596],{},"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 ",[1596,8595,2426],{"href":2425}," of your account.",[1570,8598,8599],{},[2441,8600,8601],{},"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.",[1562,8603,2430],{"id":2429},[1567,8605],{},[1570,8607,8608],{},"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.",[2445,8610,8611],{},"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":1640,"searchDepth":1641,"depth":1641,"links":8613},[8614,8615,8616,8619,8620],{"id":2181,"depth":1644,"text":2182},{"id":8205,"depth":1644,"text":8206},{"id":8323,"depth":1644,"text":8324,"children":8617},[8618],{"id":8329,"depth":1641,"text":8330},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to use cURL to trigger your automation. This allows for your automations to be triggered using the command line.",{"type":1740,"format":1729,"intent_type":2154,"intent":2461,"tags":8623,"platfrom":8626},[8226,8624,8625,8344],"endpoint","http",[3387],"\u002Fguides\u002Fcurl",{"title":8171,"description":8621},"guides\u002Fcurl","JUl0WeNAtxxDrIUiK-rsprpK9HT3u3nOOGuvQRJOePQ",{"id":8632,"title":8633,"body":8634,"date":1651,"description":8902,"extension":1653,"meta":8903,"navigation":1657,"order":1651,"path":8908,"seo":8909,"stem":8910,"__hash__":8911},"guides\u002Fguides\u002Fdata-input.md","How to automate data input from a Google sheet into a webform",{"type":1555,"value":8635,"toc":8892},[8636,8638,8645,8652,8680,8684,8686,8689,8728,8732,8734,8749,8753,8755,8758,8793,8796,8800,8803,8813,8817,8819,8822,8835,8839,8841,8844,8857,8861,8863,8869,8871,8873],[1567,8637],{},[1570,8639,8640,8641,8644],{},"This guide shows you how to start creating a simple bot to input data into any web form. It's a great ",[1596,8642,5561],{"href":8643},"\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.",[1570,8646,8647,8648,8651],{},"We also have a ",[1596,8649,2688],{"href":8650},"\u002Fguides\u002Fdata-input-from-google-sheet"," template to get you started fast.",[2191,8653,8654,8659,8664,8669,8675],{},[1580,8655,8656],{},[1596,8657,1742],{"href":8658},".\u002Fdata-input#add-a-read-data-from-google-sheets-step",[1580,8660,8661],{},[1596,8662,1043],{"href":8663},".\u002Fdata-input#add-a-go-to-page-step-to-load-the-web-form",[1580,8665,8666],{},[1596,8667,293],{"href":8668},".\u002Fdata-input#add-an-enter-text-step-to-input-data",[1580,8670,8671],{},[1596,8672,8674],{"href":8673},".\u002Fdata-input#continue-adding-your-steps-as-needed","Add steps here",[1580,8676,8677],{},[1596,8678,5254],{"href":8679},".data-input#add-a-click-element-to-click-the-submit-button",[1562,8681,8683],{"id":8682},"prepare-your-google-sheet","Prepare your Google Sheet",[1567,8685],{},[1570,8687,8688],{},"Create a Google sheet with some test data to run your automation with.",[8690,8691,8692,8705],"table",{},[8693,8694,8695],"thead",{},[8696,8697,8698,8702],"tr",{},[8699,8700,8701],"th",{},"Col A",[8699,8703,8704],{},"Col B",[8706,8707,8708,8716,8722],"tbody",{},[8696,8709,8710,8713],{},[8711,8712,4289],"td",{},[8711,8714,8715],{},"Surname",[8696,8717,8718,8720],{},[8711,8719,4289],{},[8711,8721,8715],{},[8696,8723,8724,8726],{},[8711,8725,4289],{},[8711,8727,8715],{},[1562,8729,8731],{"id":8730},"start-from-blank-adding-the-following-steps","Start from blank, adding the following steps",[1567,8733],{},[1570,8735,8736,8737,8740,8741,8744,8745,8748],{},"In the axiom.ai Chrome extension dashboard, click ",[1681,8738,8739],{},"\"New Automation\""," and then select \"",[1681,8742,8743],{},"Add first step\"."," Use the ",[1596,8746,8747],{"href":1361},"step finder"," to add the steps outlined below.",[1562,8750,8752],{"id":8751},"add-a-read-data-from-a-google-sheet-step","Add a ‘Read data from a Google Sheet’ step",[1567,8754],{},[1570,8756,8757],{},"First we want to our test data from the Google Sheet.",[1729,8759,8760],{},[2191,8761,8762,8771,8776,8785],{},[1580,8763,8764,8766,8767,8770],{},[1681,8765,1749],{}," - Search for the Google Sheet you created in the ",[1681,8768,8769],{},"\"Spreadsheet","\" field. Once found, click to select.",[1580,8772,8773,8775],{},[1681,8774,1755],{}," - Choose a sheet tab or leave blank to use the first tab.",[1580,8777,8778,8781,8782,1696],{},[1681,8779,8780],{},"First cell"," - Start from a specified column and row, for example, ",[1681,8783,8784],{},"\"A1\"",[1580,8786,8787,8789,8790,1696],{},[1681,8788,6877],{}," - End at a specified column and row, for example, ",[1681,8791,8792],{},"\"AB1\"",[1570,8794,8795],{},"::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::",[1562,8797,8799],{"id":8798},"add-a-go-to-page-step-to-load-the-web-form","Add a ‘Go to page’ step to load the web form",[1570,8801,8802],{},"Next we instruct the bot to load our webform in Chrome.",[1729,8804,8805],{},[2191,8806,8807],{},[1580,8808,8809,8812],{},[1681,8810,8811],{},"Enter URL -"," Insert the url to your webform.",[1562,8814,8816],{"id":8815},"add-an-enter-text-step-to-input-data","Add an ‘Enter text’ step to input data",[1567,8818],{},[1570,8820,8821],{},"Next, we use an ‘Enter text’ step to input our data into a field.",[1729,8823,8824],{},[2191,8825,8826],{},[1580,8827,8828,2654,8831,8834],{},[1681,8829,8830],{},"Text -",[1681,8832,8833],{},"‘Insert data’"," select ‘google-sheet-data’ to pass the message from the Sheet. Select column ‘A’ in the preview.",[1562,8836,8838],{"id":8837},"add-a-click-element-to-click-the-submit-button","Add a ‘Click element’ to click the submit button",[1567,8840],{},[1570,8842,8843],{},"Our next step is to set up the click action for the form's 'submit' button.",[1729,8845,8846],{},[2191,8847,8848],{},[1580,8849,8850,8852,8853,8856],{},[1681,8851,1803],{}," - Click ",[1681,8854,8855],{},"\"Select\""," highlight the ‘submit’ button click on it and press complete.",[1562,8858,8860],{"id":8859},"continue-adding-your-steps-as-needed","Continue adding your steps as needed",[1567,8862],{},[1570,8864,8865,8866,8868],{},"Now just use the ",[1596,8867,8747],{"href":1361}," to continue adding steps and complete your data entry bot.",[1562,8870,2430],{"id":2429},[1567,8872],{},[1570,8874,8875,8876,8879,8880,8882,8883,8887,8888,8891],{},"Data can be easily ",[1596,8877,8878],{"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 ",[1596,8881,1543],{"href":894}," to automate many different ",[1596,8884,8886],{"href":8885},"\u002Fdocs\u002Ftutorials\u002Fbrowser-actions","web actions"," performed when ",[1596,8889,8890],{"href":8643},"filling in forms",", such as selecting lists, date pickers, and key presses.",{"title":1640,"searchDepth":1641,"depth":1641,"links":8893},[8894,8895,8896,8897,8898,8899,8900,8901],{"id":8682,"depth":1644,"text":8683},{"id":8730,"depth":1644,"text":8731},{"id":8751,"depth":1644,"text":8752},{"id":8798,"depth":1644,"text":8799},{"id":8815,"depth":1644,"text":8816},{"id":8837,"depth":1644,"text":8838},{"id":8859,"depth":1644,"text":8860},{"id":2429,"depth":1644,"text":2430},"Learn how to create a simple bot that inputs data into a webform from a Google sheet in the browser.",{"type":2152,"format":2153,"intent_type":3384,"intent":8904,"tags":8905,"platfrom":8906},"Fill forms and input data",[2688,2689],[8907],"Google","\u002Fguides\u002Fdata-input",{"title":8633,"description":8902},"guides\u002Fdata-input","ccJqSmW5pioPvMgEw6MDy-tswupTYzNkIfRhrBoWSfA",{"id":8913,"title":8914,"body":8915,"date":2676,"description":9120,"extension":1653,"meta":9121,"navigation":1657,"order":1651,"path":8650,"seo":9126,"stem":9127,"__hash__":9128},"guides\u002Fguides\u002Fdata-input-from-google-sheet.md","How to automate data entry from a google sheet",{"type":1555,"value":8916,"toc":9112},[8917,8919,8922,8924,8926,8929,8933,8936,8938,8940,8944,8950,9061,9065,9068,9070,9075,9077,9079,9104],[1567,8918],{},[1570,8920,8921],{},"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,8923],{},[1562,8925,2487],{"id":2486},[1570,8927,8928],{},"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'.",[1562,8930,8932],{"id":8931},"install-the-data-entry-bot","Install the data entry bot",[1570,8934,8935],{},"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.",[1570,8937,2510],{},[1570,8939,1720],{},[1562,8941,8943],{"id":8942},"configure-your-data-entry-bot-in-just-a-few-steps","Configure your data entry bot in just a few steps",[1570,8945,8946,8947,8949],{},"We've provided a set of example steps within Step 2.0 - Loop through data. You can further customize this bot by adding additional ",[1596,8948,1543],{"href":1542}," within this loop to suit your specific needs.",[1729,8951,8952],{},[1577,8953,8954,8971],{},[1580,8955,8956,1738,8958,8960],{},[1681,8957,1737],{},[1740,8959,1742],{},[1577,8961,8962,8966],{},[1580,8963,8964,1750],{},[1740,8965,1749],{},[1580,8967,8968,8970],{},[1740,8969,1755],{},": Choose the sheet tab with the data to be input.",[1580,8972,8973,1738,8975,8977],{},[1681,8974,1761],{},[1740,8976,667],{},[1577,8978,8979,9000,9020,9033],{},[1580,8980,8981,1738,8983,8985],{},[1681,8982,1770],{},[1740,8984,293],{},[1577,8986,8987,8992],{},[1580,8988,8989,8991],{},[1740,8990,1803],{},": An input field to enter data into.",[1580,8993,8994,1780,8996,1784,8998,1696],{},[1740,8995,2587],{},[1740,8997,1783],{},[1740,8999,1874],{},[1580,9001,9002,1738,9004,9006],{},[1681,9003,1793],{},[1740,9005,293],{},[1577,9007,9008,9012],{},[1580,9009,9010,8991],{},[1740,9011,1803],{},[1580,9013,9014,1780,9016,1784,9018,1696],{},[1740,9015,2587],{},[1740,9017,1783],{},[1740,9019,1874],{},[1580,9021,9022,1738,9024,9026],{},[1681,9023,1818],{},[1740,9025,5254],{},[1577,9027,9028],{},[1580,9029,9030,9032],{},[1740,9031,1803],{},": The submit form button.",[1580,9034,9035,1738,9037,9039],{},[1681,9036,1860],{},[1740,9038,1928],{},[1577,9040,9041,9045,9049,9055],{},[1580,9042,9043,1750],{},[1740,9044,1749],{},[1580,9046,9047,1939],{},[1740,9048,1755],{},[1580,9050,9051,1810,9053,1696],{},[1740,9052,1944],{},[1740,9054,1813],{},[1580,9056,9057,1810,9059,1696],{},[1740,9058,1951],{},[1740,9060,1813],{},[1562,9062,9064],{"id":9063},"run-your-data-entry-bot","Run your data entry bot",[1570,9066,9067],{},"We suggest running a test first; watch the bot as it inputs data into the form, then stop the bot after a few loops.",[1562,9069,1964],{"id":1963},[1570,9071,9072,9073,1972],{},"Like all axiom.ai ",[1596,9074,1971],{"href":1970},[1562,9076,1398],{"id":1975},[1570,9078,1978],{},[1729,9080,9081],{},[1577,9082,9083,9094],{},[1580,9084,9085,9088,9090,9091,1696],{},[1681,9086,9087],{},"Element not found?",[1989,9089],{},"\nTry reselecting or using ",[1596,9092,9093],{"href":1383},"custom selectors",[1580,9095,9096,9099,9100,9103],{},[1681,9097,9098],{},"Data entered into the wrong input?","\nAdd ",[1596,9101,9102],{"href":1210},"wait steps"," between inputs.",[1570,9105,2127,9106,2930,9108],{},[1596,9107,2130],{"href":82},[1596,9109,9111],{"href":9110},"\u002Fblog\u002Fhow-to-automate-data-entry","data entry from a google sheet.",{"title":1640,"searchDepth":1641,"depth":1641,"links":9113},[9114,9115,9116,9117,9118,9119],{"id":2486,"depth":1644,"text":2487},{"id":8931,"depth":1644,"text":8932},{"id":8942,"depth":1644,"text":8943},{"id":9063,"depth":1644,"text":9064},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"application":3387,"read":9122,"level":2149,"video":9123,"templateId":6345,"type":2152,"format":2153,"intent_type":3384,"intent":8904,"tags":9124,"platfrom":9125},"6 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fdl1BVUWix1Q",[2688,2689],[8907],{"title":8914,"description":9120},"guides\u002Fdata-input-from-google-sheet","09AgODg7eakLV1yuO5mi9YekCMNHvHwvG-zuiMX2tPU",{"id":9130,"title":9131,"body":9132,"date":1651,"description":9241,"extension":1653,"meta":9242,"navigation":1657,"order":1651,"path":9246,"seo":9247,"stem":9248,"__hash__":9249},"guides\u002Fguides\u002Fdate-input.md","How to automate date inputs with the Date and time step",{"type":1555,"value":9133,"toc":9236},[9134,9136,9139,9143,9145,9151,9172,9175,9179,9181,9188,9212,9217,9221,9223],[1567,9135],{},[1570,9137,9138],{},"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.",[1562,9140,9142],{"id":9141},"getting-a-date-and-time","Getting a date and time",[1567,9144],{},[1570,9146,6680,9147,9150],{},[1596,9148,9149],{"href":968},"Date and time"," step can be used to get a date. This has various options to get a timestamp, such as:",[1729,9152,9153],{},[1577,9154,9155,9161,9166],{},[1580,9156,9157,9160],{},[1681,9158,9159],{},"Current"," - the current date and time.",[1580,9162,9163,9165],{},[1681,9164,5266],{}," - various options for the date to return a date relative to the current date, such as in the past or future.",[1580,9167,9168,9171],{},[1681,9169,9170],{},"Reformat existing"," - reformat a date and time passed into the step, useful when using a date from a Google Sheet.",[1570,9173,9174],{},"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.",[1562,9176,9178],{"id":9177},"using-the-timestamp","Using the timestamp",[1567,9180],{},[1570,9182,9183,9184,9187],{},"The \"Date and time\" step will return a ",[1740,9185,9186],{},"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:",[1577,9189,9190,9195,9201,9206],{},[1580,9191,9192,9194],{},[1596,9193,293],{"href":1012}," step - to input into forms.",[1580,9196,9197,9200],{},[1596,9198,9199],{"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.",[1580,9202,9203,9205],{},[1596,9204,7083],{"href":988}," step - to add the date into your file or folder name.",[1580,9207,9208,9211],{},[1596,9209,9210],{"href":1170},"Send an email"," - to add the date into your email body.",[1570,9213,9214,9215,2862],{},"For automating a date picker, see the ",[1596,9216,289],{"href":964},[1562,9218,9220],{"id":9219},"see-also","See also",[1567,9222],{},[1577,9224,9225,9230],{},[1580,9226,9227],{},[1596,9228,9229],{"href":1373},"Passing data between steps",[1580,9231,9232],{},[1596,9233,9235],{"href":9234},"\u002Fdocs\u002Fdeveloper-hub\u002Fsnippets\u002Fjavascript#get-the-date-and-time-with-javascript","Getting the date and time with JavaScript",{"title":1640,"searchDepth":1641,"depth":1641,"links":9237},[9238,9239,9240],{"id":9141,"depth":1644,"text":9142},{"id":9177,"depth":1644,"text":9178},{"id":9219,"depth":1644,"text":9220},"Learn how to automatically retrieve the date and time, and use this within your automations for form filling, and data output.",{"pinned":1657,"type":2152,"format":1729,"intent_type":2154,"intent":8904,"tags":9243,"platfrom":9245},[9244,8886],"date picker",[8907],"\u002Fguides\u002Fdate-input",{"title":9131,"description":9241},"guides\u002Fdate-input","P3CRi-E4MenQh4EM2RhB0DZb9Tthr_VPrkDewC5QsHw",{"id":9251,"title":9252,"body":9253,"date":1651,"description":9460,"extension":1653,"meta":9461,"navigation":1657,"order":1651,"path":9465,"seo":9466,"stem":9467,"__hash__":9468},"guides\u002Fguides\u002Fdiscord.md","How to automate posting to Discord using an axiom.ai automation",{"type":1555,"value":9254,"toc":9454},[9255,9257,9260,9263,9265,9267,9270,9292,9300,9304,9306,9316,9319,9369,9372,9397,9407,9411,9413,9415,9424,9426,9428,9435,9444,9446,9451],[1567,9256],{},[1570,9258,9259],{},"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.",[1570,9261,9262],{},"Note, webhooks are only available within channels inside of Discord servers.",[1562,9264,2182],{"id":2181},[1567,9266],{},[1570,9268,9269],{},"To send data to Discord, you'll need the following:",[1729,9271,9272],{},[2191,9273,9274,9280,9286],{},[1580,9275,9276,9279],{},[1681,9277,9278],{},"Server"," - You'll need to have a server set up.",[1580,9281,9282,9285],{},[1681,9283,9284],{},"Channel"," - You'll need to have a channel set up.",[1580,9287,9288,9291],{},[1681,9289,9290],{},"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.",[1570,9293,9294,9295,1696],{},"If you have any issues obtaining the webhook URL from Discord, contact ",[1596,9296,9299],{"href":9297,"rel":9298},"https:\u002F\u002Fsupport.discord.com\u002Fhc\u002Fen-us",[3874],"Discord support",[1562,9301,9303],{"id":9302},"post-a-discord-message-with-an-axiomai-automation","Post a Discord message with an axiom.ai automation",[1567,9305],{},[1570,9307,9308,9309,9312,9313,9315],{},"To send a message to a channel within your Discord server, you'll need to use the ",[1596,9310,9311],{"href":1640},"Trigger webhook"," step. You'll need the webhook URL from Discord detailed in the ",[1596,9314,8215],{"href":8214}," section.",[1570,9317,9318],{},"The payload that Discord is expecting can be found below and can be modified to your requirements:",[2353,9320,9323],{"className":9321,"code":9322,"language":4212,"meta":1640,"style":1640},"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",[1740,9324,9325,9330,9343,9355,9365],{"__ignoreMap":1640},[2361,9326,9327],{"class":2363,"line":2364},[2361,9328,9329],{"class":2402},"{\n",[2361,9331,9332,9336,9338,9341],{"class":2363,"line":1644},[2361,9333,9335],{"class":9334},"sjgCt","    \"content\"",[2361,9337,3625],{"class":2402},[2361,9339,9340],{"class":2371},"\"\u003CYOUR_MESSAGE>\"",[2361,9342,4054],{"class":2402},[2361,9344,9345,9348,9350,9353],{"class":2363,"line":1641},[2361,9346,9347],{"class":9334},"    \"username\"",[2361,9349,3625],{"class":2402},[2361,9351,9352],{"class":2371},"\"Axiom bot\"",[2361,9354,4054],{"class":2402},[2361,9356,9357,9360,9362],{"class":2363,"line":3525},[2361,9358,9359],{"class":9334},"    \"avatar_url\"",[2361,9361,3625],{"class":2402},[2361,9363,9364],{"class":2371},"\"\u003CURL>\"\n",[2361,9366,9367],{"class":2363,"line":3531},[2361,9368,4266],{"class":2402},[1570,9370,9371],{},"Let's break down each part of that payload:",[1729,9373,9374],{},[1577,9375,9376,9386,9391],{},[1580,9377,9378,9381,9382,9385],{},[1681,9379,9380],{},"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 ",[1596,9383,9384],{"href":1373},"passing data between steps"," tutorial.",[1580,9387,9388,9390],{},[1681,9389,5714],{}," - this is optional, give a name to the bot posting your message.",[1580,9392,9393,9396],{},[1681,9394,9395],{},"avatar_url"," - this is optional, display an avatar for the bot posting your message.",[1570,9398,9399,9400,9402,9403,9406],{},"Hit \"Save\" once you are happy with your automation. Below you will find an example of this in action, we've omitted the ",[1740,9401,9395],{}," in this instance and used the ",[1740,9404,9405],{},"[custom-data]"," data token to pass a custom message into the webhook.",[2227,9408],{"src":9409,"alt":9410},"\u002Fdocs\u002Fguides\u002Fdiscord-trigger-webhook.png","use the trigger webhook step to trigger a Discord webhook",[1562,9412,2410],{"id":2409},[1567,9414],{},[1570,9416,9417,9418,9420,9421,9423],{},"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 ",[1596,9419,129],{"href":2425},". See ",[1596,9422,6498],{"href":1409}," for details on common errors and how to resolve them.",[1562,9425,2430],{"id":2429},[1567,9427],{},[1570,9429,9430,9431,9434],{},"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 ",[1596,9432,1821],{"href":9433},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgenerate-text-with-chatgpt"," step, the possibilities are endless.",[1570,9436,9437,9438,9443],{},"As with all API based tools, it's worth noting the ",[1596,9439,9442],{"href":9440,"rel":9441},"https:\u002F\u002Fdiscord.com\u002Fdeveloper-hub\u002Fdocs\u002Ftopics\u002Frate-limits",[3874],"rate limits"," that Discord applies to their webhooks - if you are having issues with messages not posting correctly, this is often the first culprit.",[1567,9445],{},[1570,9447,9448],{},[2441,9449,9450],{},"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.",[2445,9452,9453],{},"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":1640,"searchDepth":1641,"depth":1641,"links":9455},[9456,9457,9458,9459],{"id":2181,"depth":1644,"text":2182},{"id":9302,"depth":1644,"text":9303},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":2682,"intent":2683,"tags":9462,"platfrom":9463},[2685,2949],[9464],"Discord","\u002Fguides\u002Fdiscord",{"title":9252,"description":9460},"guides\u002Fdiscord","DtVJ7jyF0A0EMXMCgfnhUTXRejRG8Hijh7IPFbqO9fg",{"id":9470,"title":9471,"body":9472,"date":1651,"description":9695,"extension":1653,"meta":9696,"navigation":1657,"order":1651,"path":9699,"seo":9700,"stem":9701,"__hash__":9702},"guides\u002Fguides\u002Fentering-text-into-search-field.md","How to automate entering text into search and clicking the result",{"type":1555,"value":9473,"toc":9689},[9474,9476,9479,9485,9487,9490,9529,9531,9539,9671,9673,9676,9678],[1567,9475],{},[1570,9477,9478],{},"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.",[1570,9480,9481,9482,9484],{},"We also have a great ",[1596,9483,2688],{"href":8650}," template to get you started.",[1562,9486,8683],{"id":8682},[1570,9488,9489],{},"Create a Google sheet with some test text to run your automation with.",[8690,9491,9492,9500],{},[8693,9493,9494],{},[8696,9495,9496,9498],{},[8699,9497,8701],{},[8699,9499,8704],{},[8706,9501,9502,9512,9519],{},[8696,9503,9504,9510],{},[8711,9505,9506],{},[1596,9507,9509],{"href":9508},"mailto:alex@testemail.com","alex@testemail.com",[8711,9511,8715],{},[8696,9513,9514,9517],{},[8711,9515,9516],{},"claretestemail.com",[8711,9518,8715],{},[8696,9520,9521,9527],{},[8711,9522,9523],{},[1596,9524,9526],{"href":9525},"mailto:sam@testemail.com","sam@testemail.com",[8711,9528,8715],{},[1562,9530,8731],{"id":8730},[1570,9532,8736,9533,8740,9535,8744,9537,8748],{},[1681,9534,8739],{},[1681,9536,8743],{},[1596,9538,8747],{"href":1361},[1729,9540,9541],{},[1577,9542,9543,9564],{},[1580,9544,9545,1738,9547,9549],{},[1681,9546,1737],{},[1740,9548,1742],{},[1577,9550,9551,9559],{},[1580,9552,9553,9555,9556,9558],{},[1740,9554,1749],{},": Search for the Google Sheet you created in the ",[1740,9557,1749],{}," field. Once found, click to select.",[1580,9560,9561,9563],{},[1740,9562,1755],{},": Choose a sheet tab or leave blank to use the first tab.",[1580,9565,9566,1738,9568,9570,9580],{},[1681,9567,1761],{},[1740,9569,667],{},[1577,9571,9572],{},[1580,9573,9574,1780,9576,1784,9578,1696],{},[1740,9575,667],{},[1740,9577,1841],{},[1740,9579,1787],{},[1577,9581,9582,9595,9624,9642,9659],{},[1580,9583,9584,1738,9586,9588],{},[1681,9585,1770],{},[1740,9587,1043],{},[1577,9589,9590],{},[1580,9591,9592,9594],{},[1740,9593,1779],{},": Insert the URL of the website.",[1580,9596,9597,1738,9599,9601],{},[1681,9598,1793],{},[1740,9600,293],{},[1577,9602,9603,9612],{},[1580,9604,9605,1780,9607,9609,9610,1696],{},[1740,9606,1803],{},[1740,9608,1803],{},", highlight the search field and click to select, finally press ",[1740,9611,5274],{},[1580,9613,9614,1780,9616,1784,9618,9620,9621,9623],{},[1740,9615,2587],{},[1740,9617,1841],{},[1740,9619,1787],{}," to pass the search term from the sheet. Select column ",[1740,9622,5163],{}," in the preview.",[1580,9625,9626,1738,9628,9630],{},[1681,9627,1818],{},[1740,9629,6955],{},[1577,9631,9632],{},[1580,9633,9634,6963,9636,7092,9638,9641],{},[1740,9635,6962],{},[1740,9637,6966],{},[1740,9639,9640],{},"Return",", to submit the search.",[1580,9643,9644,1738,9646,9648],{},[1681,9645,1860],{},[1740,9647,5254],{},[1577,9649,9650],{},[1580,9651,9652,1780,9654,9656,9657,1696],{},[1740,9653,1803],{},[1740,9655,1803],{},", highlight the search result, and press ",[1740,9658,5274],{},[1580,9660,9661,1738,9663,9666],{},[1681,9662,1888],{},[1740,9664,9665],{},"Delete row from Google Sheet",[1577,9667,9668],{},[1580,9669,9670],{},"Automatically removes the processed row to avoid duplicate scrapes in the next loop.",[1562,9672,8860],{"id":8859},[1570,9674,9675],{},"Now just use the step finder to continue adding steps and complete your search bot as required.",[1562,9677,2430],{"id":2429},[1570,9679,9680,9681,9685,9686,9688],{},"You can quickly scaffold a bot to ",[1596,9682,9684],{"href":9683},"\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 ",[1596,9687,1543],{"href":1361}," to fully customize the bot to the use case",{"title":1640,"searchDepth":1641,"depth":1641,"links":9690},[9691,9692,9693,9694],{"id":8682,"depth":1644,"text":8683},{"id":8730,"depth":1644,"text":8731},{"id":8859,"depth":1644,"text":8860},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":2154,"intent_type":2682,"intent":8904,"tags":9697,"platfrom":9698},[2688],[3387],"\u002Fguides\u002Fentering-text-into-search-field",{"title":9471,"description":9695},"guides\u002Fentering-text-into-search-field","Hv9XgIb5ijdiaflcb9rW80QrUg7Dajvk-hculcMuJ6c",{"id":9704,"title":9705,"body":9706,"date":1651,"description":9712,"extension":1653,"meta":9899,"navigation":1657,"order":1651,"path":9905,"seo":9906,"stem":9907,"__hash__":9908},"guides\u002Fguides\u002Ferror-reporting-via-webhook.md","How to set up custom error reporting with webhooks and enriched context",{"type":1555,"value":9707,"toc":9891},[9708,9710,9713,9716,9720,9724,9727,9788,9791,9795,9798,9801,9808,9847,9850,9854,9857,9863,9867,9870,9874,9877,9880,9883,9886,9888],[1567,9709],{},[1570,9711,9712],{},"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.",[1570,9714,9715],{},"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.",[1562,9717,9719],{"id":9718},"how-to-set-up-webhook-or-email-notifications","How to set up webhook or email notifications",[2227,9721],{"src":9722,"alt":9723},"\u002Fguides\u002Fnotificaiton-on-error.webp","Axiom.ai configure notifications",[1570,9725,9726],{},"To configure notifications for your automation:",[1729,9728,9729],{},[2191,9730,9731,9737,9747,9764,9778],{},[1580,9732,9733,9734,1696],{},"Inside the automation editor, click ",[1740,9735,9736],{},"**Settings**",[1580,9738,9739,9740,9743,9744,1696],{},"Under ",[1740,9741,9742],{},"**Run options**",", click ",[1740,9745,9746],{},"**Notifications**",[1580,9748,2335,9749,9752,9753],{},[1740,9750,9751],{},"**When to notify**",", for example:\n",[1577,9754,9755,9758,9761],{},[1580,9756,9757],{},"On error",[1580,9759,9760],{},"On success",[1580,9762,9763],{},"On warnings",[1580,9765,9766,9767,9770,9771],{},"Choose ",[1740,9768,9769],{},"**How to notify**",":\n",[1577,9772,9773,9776],{},[1580,9774,9775],{},"Webhook",[1580,9777,8031],{},[1580,9779,9780,9781,9784,9785,1696],{},"Enter the ",[1740,9782,9783],{},"**webhook URL**"," or one or more ",[1740,9786,9787],{},"**email addresses**",[1570,9789,9790],{},"By default, notifications include the run status and basic error logs. While useful, this information is often too limited when debugging more complex automations.",[1562,9792,9794],{"id":9793},"how-to-enrich-your-error-message-with-data","How to enrich your error message with data",[2227,9796],{"src":9797,"alt":9723},"\u002Fguides\u002Fcustom-error-message.webp",[1570,9799,9800],{},"You can enrich error messages by attaching contextual data from your automation.",[1570,9802,9803,9804,9807],{},"Using the step finder, search for and add the ",[1681,9805,9806],{},"Add error metadata"," step. Place this step immediately after the step you want to monitor.",[1729,9809,9810],{},[2191,9811,9812,9819,9829,9844],{},[1580,9813,9814,9815,9818],{},"Insert the ",[1740,9816,9817],{},"**Add error metadata**"," step into your automation.",[1580,9820,9821,9822,9825,9826,1696],{},"In the ",[1740,9823,9824],{},"**Message**"," field, click ",[1740,9827,9828],{},"**Insert data**",[1580,9830,9831,9832,9834,9835],{},"Select tokens from any step that appears before the ",[1740,9833,9817],{}," step.\n",[1577,9836,9837],{},[1580,9838,9839,9840,9843],{},"For example, if you are manipulating scraped data with a ",[1740,9841,9842],{},"**Split**"," step, you can include the output from that step.",[1580,9845,9846],{},"Combine tokens and text to construct a clear, descriptive error message that explains what data was being processed at the time.",[1570,9848,9849],{},"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.",[1562,9851,9853],{"id":9852},"how-to-handle-runtime-errors-with-different-actions","How to handle runtime errors with different actions",[1570,9855,9856],{},"In some cases, you may want your automation to take a different set of actions when an error occurs instead of failing completely.",[1570,9858,9859,9860,9862],{},"This can be done using the ",[1681,9861,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.",[1562,9864,9866],{"id":9865},"how-to-ignore-errors-completely","How to ignore errors completely",[1570,9868,9869],{},"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.",[1562,9871,9873],{"id":9872},"major-update-session-recording-and-breakpoints","Major update: session recording and breakpoints",[1570,9875,9876],{},"We’re working on a major update to axiom.ai that introduces session recording and breakpoints.",[1570,9878,9879],{},"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.",[1570,9881,9882],{},"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.",[1570,9884,9885],{},"Session recording will be available on higher tier plans and will be optional. For privacy, sensitive data will be automatically blurred in recordings.",[1562,9887,2430],{"id":2429},[1570,9889,9890],{},"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":1640,"searchDepth":1641,"depth":1641,"links":9892},[9893,9894,9895,9896,9897,9898],{"id":9718,"depth":1644,"text":9719},{"id":9793,"depth":1644,"text":9794},{"id":9852,"depth":1644,"text":9853},{"id":9865,"depth":1644,"text":9866},{"id":9872,"depth":1644,"text":9873},{"id":2429,"depth":1644,"text":2430},{"metaTitle":9900,"type":2152,"format":1729,"intent_type":2154,"intent":9901,"tags":9902,"platfrom":9904},"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",[9903],"error handling",[3387],"\u002Fguides\u002Ferror-reporting-via-webhook",{"title":9705,"description":9712},"guides\u002Ferror-reporting-via-webhook","JgQEpKk5x1YtfjjHwavxPvo9sQcmgXpwfsShaEIaSTg",{"id":9910,"title":9911,"body":9912,"date":1651,"description":10326,"extension":1653,"meta":10327,"navigation":1657,"order":1651,"path":10330,"seo":10331,"stem":10332,"__hash__":10333},"guides\u002Fguides\u002Fextract-emails.md","How to extract emails from a webpage",{"type":1555,"value":9913,"toc":10318},[9914,9916,9919,9921,9924,9928,9931,9960,9963,9994,9998,10001,10107,10110,10205,10208,10296,10298,10304,10307,10309,10315],[1567,9915],{},[1570,9917,9918],{},"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.",[1562,9920,2182],{"id":2181},[1570,9922,9923],{},"To get started, create an a new automation within axiom.ai.",[1562,9925,9927],{"id":9926},"extracting-email-addresses","Extracting email addresses",[1570,9929,9930],{},"In order to extract email addresses from a single page, follow the steps below:",[1729,9932,9933],{},[2191,9934,9935,9943,9950],{},[1580,9936,9937,9938,9942],{},"Add a ",[1596,9939,9940],{"href":1044},[1740,9941,1043],{}," step to your automation, input the website that you would like to extract email addresses from.",[1580,9944,9937,9945,9949],{},[1596,9946,9947],{"href":1226},[1740,9948,3928],{}," step, include the code below to extract the email addresses. Select the variant that works for your needs.",[1580,9951,9937,9952,9956,9957,9959],{},[1596,9953,9954],{"href":1214},[1740,9955,9199],{}," step and write the ",[1740,9958,4607],{}," data token to your Google Sheet.",[1570,9961,9962],{},"To use this method to extract email addresses from multiple pages, follow the steps below:",[1729,9964,9965],{},[2191,9966,9967,9981,9991],{},[1580,9968,9937,9969,9973,9974,9980],{},[1596,9970,9971],{"href":1091},[1740,9972,1742],{}," step, this sheet should contain a list of URLs to visit. See ",[1596,9975,9977],{"href":9976},".\u002Fextract-links-into-google-sheet",[1740,9978,9979],{},"How to extract links and write to a Google Sheet"," for more details on how to do this.",[1580,9982,9937,9983,9987,9988,9990],{},[1596,9984,9985],{"href":1075},[1740,9986,667],{}," step, use the ",[1740,9989,1787],{}," token to loop through the list of URLs.",[1580,9992,9993],{},"Inside the loop, add the steps from the section above.",[1611,9995,9997],{"id":9996},"scripts","Scripts",[1570,9999,10000],{},"Retrieve all email addresses:",[2353,10002,10004],{"className":2390,"code":10003,"language":2392,"meta":1640,"style":1640},"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",[1740,10005,10006,10016,10029,10044,10048,10095,10103],{"__ignoreMap":1640},[2361,10007,10008,10010,10013],{"class":2363,"line":2364},[2361,10009,1613],{"class":3616},[2361,10011,10012],{"class":4003}," getEmails",[2361,10014,10015],{"class":2402},"() {\n",[2361,10017,10018,10021,10024,10026],{"class":2363,"line":1644},[2361,10019,10020],{"class":3616},"    var",[2361,10022,10023],{"class":2402}," pageHTML ",[2361,10025,6580],{"class":3616},[2361,10027,10028],{"class":2402}," document.body.innerHTML;\n",[2361,10030,10031,10034,10036,10039,10042],{"class":2363,"line":1641},[2361,10032,10033],{"class":2402},"    pageHTMLStr ",[2361,10035,6580],{"class":3616},[2361,10037,10038],{"class":2402}," pageHTML.",[2361,10040,10041],{"class":4003},"toString",[2361,10043,4215],{"class":2402},[2361,10045,10046],{"class":2363,"line":3525},[2361,10047,3528],{"emptyLinePlaceholder":1657},[2361,10049,10050,10053,10055,10058,10061,10063,10066,10069,10072,10075,10077,10079,10083,10085,10087,10090,10093],{"class":2363,"line":3531},[2361,10051,10052],{"class":2402},"    emailAddresses ",[2361,10054,6580],{"class":3616},[2361,10056,10057],{"class":2402}," pageHTMLStr.",[2361,10059,10060],{"class":4003},"match",[2361,10062,4169],{"class":2402},[2361,10064,10065],{"class":2371},"\u002F(",[2361,10067,10068],{"class":3512},"[a-zA-Z0-9._-]",[2361,10070,10071],{"class":3616},"+",[2361,10073,10074],{"class":2371},"@",[2361,10076,10068],{"class":3512},[2361,10078,10071],{"class":3616},[2361,10080,10082],{"class":10081},"sa8KN","\\.",[2361,10084,10068],{"class":3512},[2361,10086,10071],{"class":3616},[2361,10088,10089],{"class":2371},")\u002F",[2361,10091,10092],{"class":3616},"gi",[2361,10094,6615],{"class":2402},[2361,10096,10097,10100],{"class":2363,"line":3603},[2361,10098,10099],{"class":3616},"    return",[2361,10101,10102],{"class":2402}," [emailAddresses];\n",[2361,10104,10105],{"class":2363,"line":3682},[2361,10106,4266],{"class":2402},[1570,10108,10109],{},"Retrieve all email addresses, remove duplicates:",[2353,10111,10113],{"className":2390,"code":10112,"language":2392,"meta":1640,"style":1640},"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",[1740,10114,10115,10123,10133,10145,10149,10185,10201],{"__ignoreMap":1640},[2361,10116,10117,10119,10121],{"class":2363,"line":2364},[2361,10118,1613],{"class":3616},[2361,10120,10012],{"class":4003},[2361,10122,10015],{"class":2402},[2361,10124,10125,10127,10129,10131],{"class":2363,"line":1644},[2361,10126,10020],{"class":3616},[2361,10128,10023],{"class":2402},[2361,10130,6580],{"class":3616},[2361,10132,10028],{"class":2402},[2361,10134,10135,10137,10139,10141,10143],{"class":2363,"line":1641},[2361,10136,10033],{"class":2402},[2361,10138,6580],{"class":3616},[2361,10140,10038],{"class":2402},[2361,10142,10041],{"class":4003},[2361,10144,4215],{"class":2402},[2361,10146,10147],{"class":2363,"line":3525},[2361,10148,3528],{"emptyLinePlaceholder":1657},[2361,10150,10151,10153,10155,10157,10159,10161,10163,10165,10167,10169,10171,10173,10175,10177,10179,10181,10183],{"class":2363,"line":3531},[2361,10152,10052],{"class":2402},[2361,10154,6580],{"class":3616},[2361,10156,10057],{"class":2402},[2361,10158,10060],{"class":4003},[2361,10160,4169],{"class":2402},[2361,10162,10065],{"class":2371},[2361,10164,10068],{"class":3512},[2361,10166,10071],{"class":3616},[2361,10168,10074],{"class":2371},[2361,10170,10068],{"class":3512},[2361,10172,10071],{"class":3616},[2361,10174,10082],{"class":10081},[2361,10176,10068],{"class":3512},[2361,10178,10071],{"class":3616},[2361,10180,10089],{"class":2371},[2361,10182,10092],{"class":3616},[2361,10184,6615],{"class":2402},[2361,10186,10187,10189,10192,10195,10198],{"class":2363,"line":3603},[2361,10188,10099],{"class":3616},[2361,10190,10191],{"class":2402}," [[",[2361,10193,10194],{"class":3616},"...new",[2361,10196,10197],{"class":4003}," Set",[2361,10199,10200],{"class":2402},"(emailAddresses)]];\n",[2361,10202,10203],{"class":2363,"line":3682},[2361,10204,4266],{"class":2402},[1570,10206,10207],{},"Retrieve all email addresses that match a domain:",[2353,10209,10211],{"className":2390,"code":10210,"language":2392,"meta":1640,"style":1640},"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",[1740,10212,10213,10221,10231,10243,10247,10252,10282,10292],{"__ignoreMap":1640},[2361,10214,10215,10217,10219],{"class":2363,"line":2364},[2361,10216,1613],{"class":3616},[2361,10218,10012],{"class":4003},[2361,10220,10015],{"class":2402},[2361,10222,10223,10225,10227,10229],{"class":2363,"line":1644},[2361,10224,10020],{"class":3616},[2361,10226,10023],{"class":2402},[2361,10228,6580],{"class":3616},[2361,10230,10028],{"class":2402},[2361,10232,10233,10235,10237,10239,10241],{"class":2363,"line":1641},[2361,10234,10033],{"class":2402},[2361,10236,6580],{"class":3616},[2361,10238,10038],{"class":2402},[2361,10240,10041],{"class":4003},[2361,10242,4215],{"class":2402},[2361,10244,10245],{"class":2363,"line":3525},[2361,10246,3528],{"emptyLinePlaceholder":1657},[2361,10248,10249],{"class":2363,"line":3531},[2361,10250,10251],{"class":4545},"    \u002F\u002F Replace \"example.com\" with your domain\n",[2361,10253,10254,10256,10258,10260,10262,10264,10266,10268,10270,10273,10275,10278,10280],{"class":2363,"line":3603},[2361,10255,10052],{"class":2402},[2361,10257,6580],{"class":3616},[2361,10259,10057],{"class":2402},[2361,10261,10060],{"class":4003},[2361,10263,4169],{"class":2402},[2361,10265,10065],{"class":2371},[2361,10267,10068],{"class":3512},[2361,10269,10071],{"class":3616},[2361,10271,10272],{"class":2371},"@example",[2361,10274,1696],{"class":3512},[2361,10276,10277],{"class":2371},"com)\u002F",[2361,10279,10092],{"class":3616},[2361,10281,6615],{"class":2402},[2361,10283,10284,10286,10289],{"class":2363,"line":3682},[2361,10285,10099],{"class":3616},[2361,10287,10288],{"class":2402}," [emailAddresses]; ",[2361,10290,10291],{"class":4545},"\u002F\u002F or return [[...new Set(emailAddresses)]];\n",[2361,10293,10294],{"class":2363,"line":3688},[2361,10295,4266],{"class":2402},[1562,10297,2410],{"id":2409},[1570,10299,10300,10301,10303],{},"Click \"Run\" on your automation, observe the builder for any errors (see ",[1596,10302,3833],{"href":1409}," for more details) and your Google Sheet for changes.",[1570,10305,10306],{},"Alternatively, if you are a developer, this code can be copied into the Chrome Devtools console for testing outside of your automation.",[1562,10308,2430],{"id":2429},[1570,10310,10311,10312,1696],{},"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 ",[1596,10313,4945],{"href":4943,"rel":10314},[3874],[2445,10316,10317],{},"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":1640,"searchDepth":1641,"depth":1641,"links":10319},[10320,10321,10324,10325],{"id":2181,"depth":1644,"text":2182},{"id":9926,"depth":1644,"text":9927,"children":10322},[10323],{"id":9996,"depth":1641,"text":9997},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":3384,"intent":5637,"tags":10328,"platfrom":10329},[2158,3163],[3387],"\u002Fguides\u002Fextract-emails",{"title":9911,"description":10326},"guides\u002Fextract-emails","CLejNzPKS-oq-H37YFGLBZ31meHspwQYM6zdMsycnq0",{"id":10335,"title":10336,"body":10337,"date":1651,"description":10525,"extension":1653,"meta":10526,"navigation":1657,"order":1651,"path":10529,"seo":10530,"stem":10531,"__hash__":10532},"guides\u002Fguides\u002Fgithub.md","How to automate Github using an axiom.ai automation",{"type":1555,"value":10338,"toc":10518},[10339,10341,10349,10352,10354,10357,10381,10388,10392,10398,10414,10417,10463,10474,10480,10486,10488,10497,10499,10506,10513],[1567,10340],{},[1570,10342,10343,10348],{},[1596,10344,10347],{"href":10345,"rel":10346},"https:\u002F\u002Fgithub.com",[3874],"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.",[1570,10350,10351],{},"Github offers many features around the use of their API and webhooks, for this guide, we will be concentrating on webhooks.",[1562,10353,2182],{"id":2181},[1570,10355,10356],{},"To get started you will need to have the following prepared:",[1729,10358,10359],{},[1577,10360,10361,10364,10367,10370,10375],{},[1580,10362,10363],{},"A Github account",[1580,10365,10366],{},"A Github repository",[1580,10368,10369],{},"An axiom.ai account",[1580,10371,10372,10373],{},"An axiom.ai subscription",[4954,10374,1813],{},[1580,10376,10377,10378],{},"Your axiom.ai API - ",[1596,10379,10380],{"href":2200},"API Documentation",[1570,10382,10383],{},[2441,10384,10385,10387],{},[4954,10386,1813],{}," Subscription is required to use the \"Receive data from another app\" step",[1562,10389,10391],{"id":10390},"triggering-an-automated-based-on-github-repository-event","Triggering an automated based on Github repository event",[1570,10393,10394,10395,10397],{},"Github offers the ability to send a webhook when an event occurs within a repository. This defaults to ",[1740,10396,6653],{}," events, but you can configure this to notify you of all events, or specific events. To create a new webhook, follow the steps below:",[1729,10399,10400],{},[2191,10401,10402,10405,10408,10411],{},[1580,10403,10404],{},"Open your repository.",[1580,10406,10407],{},"Navigate to \"Settings\".",[1580,10409,10410],{},"Navigate to \"Webhooks\".",[1580,10412,10413],{},"Click \"Add webhook\".",[1570,10415,10416],{},"To configure your new webhook, use the following settings:",[1729,10418,10419],{},[1577,10420,10421,10434,10445,10455],{},[1580,10422,10423,10426,10428,10429,10431],{},[1681,10424,10425],{},"1. Payload URL",[1989,10427],{},"\nSet to the axiom.ai endpoint. This will include your automation name and API key:",[1989,10430],{},[1740,10432,10433],{},"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger?key=\u003CKEY>&name=\u003CNAME>",[1580,10435,10436,10439,10441,10442,1696],{},[1681,10437,10438],{},"2. Content type",[1989,10440],{},"\nSet to ",[1740,10443,10444],{},"application\u002Fjson",[1580,10446,10447,10450,10452,10453,1696],{},[1681,10448,10449],{},"3. Events",[1989,10451],{},"\nConfigure the webhook events based on your needs. If your repo has high activity, consider axiom.ai's ",[1596,10454,9442],{"href":364},[1580,10456,10457,10460,10462],{},[1681,10458,10459],{},"4. Save your work",[1989,10461],{},"\nMake sure to save the webhook configuration before exiting.",[1570,10464,10465,10468,10469,1696],{},[4954,10466,10467],{},"2"," The automation name should be encoded, for example \"Hello world\" → \"Hello+world\". Learn more at ",[1596,10470,10473],{"href":10471,"rel":10472},"https:\u002F\u002Fwww.w3schools.com\u002Ftags\u002Fref_urlencode.ASP",[3874],"w3schools",[1570,10475,10476,10477,10479],{},"Once the webhook has been set up, you'll need to add a ",[1596,10478,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.",[10481,10482,10483],"blockquote",{},[1570,10484,10485],{},"💡 Grabbing a sample of the payload would allow you to create 'test data' within this step",[1562,10487,2410],{"id":2409},[1570,10489,10490,10491,10493,10494,10496],{},"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 ",[1596,10492,129],{"href":2425}," to ensure that the automation has run. Review any errors and make changes as required. If you experience issues, see ",[1596,10495,6498],{"href":1409}," for common resolutions.",[1611,10498,2430],{"id":2429},[1570,10500,10501,10502,10505],{},"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 ",[1596,10503,10504],{"href":1970},"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.",[1570,10507,10508,10509],{},"We'd love to hear about what you do with this, let us know over in our ",[1596,10510,4945],{"href":10511,"rel":10512},"https:\u002F\u002Freddit.com\u002Fr\u002Faxiom_ai",[3874],[1570,10514,10515],{},[2441,10516,10517],{},"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":1640,"searchDepth":1641,"depth":1641,"links":10519},[10520,10521,10522],{"id":2181,"depth":1644,"text":2182},{"id":10390,"depth":1644,"text":10391},{"id":2409,"depth":1644,"text":2410,"children":10523},[10524],{"id":2429,"depth":1641,"text":2430},"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":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":10527,"platfrom":10528},[2463,2464],[10347],"\u002Fguides\u002Fgithub",{"title":10336,"description":10525},"guides\u002Fgithub","otmZ9YmlUwp_zhRhrrqg7uv_DzZuKSQsbMjST5ePl0k",{"id":10534,"title":10535,"body":10536,"date":2676,"description":10849,"extension":1653,"meta":10850,"navigation":1657,"order":1651,"path":10855,"seo":10856,"stem":10857,"__hash__":10858},"guides\u002Fguides\u002Fgmail-mail-merge.md","How to mail merge with Gmail using google sheets",{"type":1555,"value":10537,"toc":10841},[10538,10540,10547,10549,10551,10558,10562,10569,10573,10575,10579,10711,10715,10720,10722,10727,10729,10734,10833],[1567,10539],{},[1570,10541,10542,10543,10546],{},"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 ",[1681,10544,10545],{},"\"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,10548],{},[1562,10550,2487],{"id":2486},[1570,10552,10553,10554,10557],{},"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 ",[1681,10555,10556],{},"\"Gmail Mailer\"",". Add some content to test with email addresses, name, subject, body etc",[1562,10559,10561],{"id":10560},"install-the-gmail-bulk-sender-bot","Install the Gmail bulk sender bot",[1570,10563,10564,10565,1707,10567,1711],{},"To install this Gmail bot click ",[1681,10566,1706],{},[1681,10568,1710],{},[1570,10570,1714,10571,1696],{},[1681,10572,1717],{},[1570,10574,1720],{},[1562,10576,10578],{"id":10577},"configure-your-gmail-bulk-sender-bot","Configure your Gmail bulk sender bot",[1729,10580,10581,10709],{},[1577,10582,10583,10600,10608],{},[1580,10584,10585,1738,10587,10589],{},[1681,10586,1994],{},[1740,10588,1742],{},[1577,10590,10591,10595],{},[1580,10592,10593,1750],{},[1740,10594,1749],{},[1580,10596,10597,10599],{},[1740,10598,1755],{},": Choose the tab with the email information in it.",[1580,10601,10602,1738,10604,10607],{},[1681,10603,2542],{},[1740,10605,10606],{},"Go to page: mail.google.com\u002Fmail\u002Fu\u002F0\u002F#inbox","^",[1580,10609,10610,1738,10613,10615],{},[1681,10611,10612],{},"Step 3.0",[1740,10614,667],{},[1577,10616,10617,10625,10641,10649,10665,10670,10686,10691],{},[1580,10618,10619,1738,10622,10607],{},[1681,10620,10621],{},"Step 3.1",[1740,10623,10624],{},"Wait: For compose to open",[1580,10626,10627,1738,10630,10633],{},[1681,10628,10629],{},"Step 3.2",[1740,10631,10632],{},"Enter text: Email",[1577,10634,10635],{},[1580,10636,10637,2799,10639,1696],{},[1740,10638,2587],{},[1740,10640,1874],{},[1580,10642,10643,1738,10646,10607],{},[1681,10644,10645],{},"Step 3.3",[1740,10647,10648],{},"Press key(s): Tab to Subject",[1580,10650,10651,1738,10654,10657],{},[1681,10652,10653],{},"Step 3.4",[1740,10655,10656],{},"Enter text: Subject",[1577,10658,10659],{},[1580,10660,10661,2799,10663,1696],{},[1740,10662,2587],{},[1740,10664,1874],{},[1580,10666,10667,10607],{},[1681,10668,10669],{},"Step 3.5 – 3.6",[1580,10671,10672,1738,10675,10678],{},[1681,10673,10674],{},"Step 3.7",[1740,10676,10677],{},"Enter text: Body",[1577,10679,10680],{},[1580,10681,10682,2799,10684,1696],{},[1740,10683,2587],{},[1740,10685,1874],{},[1580,10687,10688,10607],{},[1681,10689,10690],{},"Step 3.8 – 3.11",[1580,10692,10693,1738,10696,10698],{},[1681,10694,10695],{},"Step 3.12",[1740,10697,1928],{},[1577,10699,10700,10704],{},[1580,10701,10702,1750],{},[1740,10703,1749],{},[1580,10705,10706,10708],{},[1740,10707,1755],{},": Choose the tab with the emails in it.",[1570,10710,2617],{},[1562,10712,10714],{"id":10713},"run-your-gmail-bulk-sender-bot","Run your Gmail bulk sender bot",[1570,10716,10717,10718,1696],{},"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 ",[1596,10719,2627],{"href":638},[1562,10721,1964],{"id":1963},[1570,10723,1967,10724,10726],{},[1596,10725,1971],{"href":1970},", you can use our no-code bot builder to customize any bot according to your requirements",[1562,10728,1398],{"id":1975},[1570,10730,10731,10732,1696],{},"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 ",[1596,10733,2627],{"href":638},[1729,10735,10736],{},[1577,10737,10738,10749,10766,10782,10797,10808,10819],{},[1580,10739,10740,10743,1991,10745,10748],{},[1681,10741,10742],{},"Email not added?",[1989,10744],{},[1740,10746,10747],{},"Step 3.2 – Enter text: Email",", check the cursor location. By default, it should be in the Email input field.",[1580,10750,10751,10754,1991,10756,10759,10760,10762,10763,10765],{},[1681,10752,10753],{},"Tab not working?",[1989,10755],{},[1740,10757,10758],{},"Step 3.3 – Press Key(s): Tab to Subject",", make sure the step includes pressing ",[1740,10761,9640],{}," to submit the email address, followed by ",[1740,10764,6970],{}," to move to the Subject field.",[1580,10767,10768,10771,1991,10773,10776,10777,10779,10780,1696],{},[1681,10769,10770],{},"Subject text not added?",[1989,10772],{},[1740,10774,10775],{},"Step 3.4 – Enter text: Subject",", confirm that you clicked ",[1740,10778,1841],{}," and selected ",[1740,10781,1874],{},[1580,10783,10784,10787,1991,10789,10792,10793,10796],{},[1681,10785,10786],{},"Body entered into subject?",[1989,10788],{},[1740,10790,10791],{},"Step 3.7 – Enter text: Body",", check ",[1740,10794,10795],{},"Step 3.6"," to ensure the cursor is correctly placed before the body text is entered.",[1580,10798,10799,10802,1991,10804,10807],{},[1681,10800,10801],{},"Send key not clicked?",[1989,10803],{},[1740,10805,10806],{},"Step 3.9 – Press Key(s): Click send",", re-record the keystroke sequence and test again.",[1580,10809,10810,10813,1991,10815,10818],{},[1681,10811,10812],{},"Bot out of sync?",[1989,10814],{},[1740,10816,10817],{},"Step 3.10 – Wait: For email to send",", try extending the wait time to give Gmail more time to process.",[1580,10820,10821,10824,1991,10826,10829,10830,10832],{},[1681,10822,10823],{},"Compose button not found or visible?",[1989,10825],{},[1740,10827,10828],{},"Step 3.11 – Click element: Open new Compose window",", reselect the compose button.",[1989,10831],{},"\nIf it's not visible, check that the Gmail sidebar is toggled open.",[1570,10834,2127,10835,10837,10838],{},[1596,10836,2130],{"href":82},"\nTo learn more read this full in-depth guide on how to send an ",[1596,10839,10840],{"href":3146},"email blast using  Gmail.",{"title":1640,"searchDepth":1641,"depth":1641,"links":10842},[10843,10844,10845,10846,10847,10848],{"id":2486,"depth":1644,"text":2487},{"id":10560,"depth":1644,"text":10561},{"id":10577,"depth":1644,"text":10578},{"id":10713,"depth":1644,"text":10714},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":3158,"level":2149,"video":10851,"templateId":3817,"type":2152,"format":2153,"intent_type":2682,"intent":3161,"tags":10852,"platfrom":10854},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fr8W-S0Oc6QI",[3163,10853],"mail merge",[3165],"\u002Fguides\u002Fgmail-mail-merge",{"title":10535,"description":10849},"guides\u002Fgmail-mail-merge","LwpEB2Du4j0QYMkZbvIGJahErvkOgW3zPs0JMQZM9RQ",{"id":10860,"title":10861,"body":10862,"date":1651,"description":11383,"extension":1653,"meta":11384,"navigation":1657,"order":1651,"path":11388,"seo":11389,"stem":11390,"__hash__":11391},"guides\u002Fguides\u002Fgoogle-apps-script.md","How to use Google Apps Script to trigger an automation",{"type":1555,"value":10863,"toc":11373},[10864,10866,10875,10877,10879,10881,10901,10903,10907,10909,10912,10916,10918,10921,10952,10955,10959,10961,10964,10996,11298,11302,11306,11308,11311,11331,11334,11336,11338,11341,11359,11363,11365,11367,11370],[1567,10865],{},[1570,10867,10868,10869,10871,10872,10874],{},"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 ",[1596,10870,1628],{"href":2200},". 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 ",[1596,10873,759],{"href":760}," that can be used to fetch, write, and edit Google Sheets data.",[1562,10876,2182],{"id":2181},[1567,10878],{},[1570,10880,2187],{},[1729,10882,10883],{},[2191,10884,10885,10891,10895],{},[1580,10886,10887,2197,10889,1696],{},[1681,10888,1628],{},[1596,10890,2201],{"href":2200},[1580,10892,10893,2207],{},[1681,10894,2206],{},[1580,10896,10897,2213,10899,1696],{},[1681,10898,2212],{},[1740,10900,2216],{},[1558,10902],{},[1562,10904,10906],{"id":10905},"trigger-an-axiomai-automation-using-google-app-scripts","Trigger an axiom.ai automation using Google App Scripts",[1567,10908],{},[1570,10910,10911],{},"Learn how to get started with triggering your axiom.ai automation with a Google App Script.",[1611,10913,10915],{"id":10914},"set-your-axiomai-automation","Set your axiom.ai automation",[1567,10917],{},[1570,10919,10920],{},"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.",[1729,10922,10923],{},[2191,10924,10925,10931,10938],{},[1580,10926,10927],{},[1681,10928,10929],{},[1740,10930,1110],{},[1580,10932,10933,10937],{},[1681,10934,10935],{},[1740,10936,1043],{},": Insert the Google search URL",[1580,10939,10940,10944,10945,5108,10948,10951],{},[1681,10941,10942],{},[1740,10943,293],{},": Select the search field, then click ",[1681,10946,10947],{},"insert data",[1681,10949,10950],{},"webhook-data"," to pass data from the sheet, select column 'A' in the data preview.",[2227,10953],{"src":10954,"alt":2272},"\u002Fdocs\u002Fguides\u002Ftrigger-axiom-from-app-script.jpg",[1611,10956,10958],{"id":10957},"create-an-api-call-using-google-apps-script","Create an API call using Google Apps Script",[1567,10960],{},[1570,10962,10963],{},"First, create a new Google Sheet by entering 'Sheet.new' into a blank browser tab.",[1729,10965,10966],{},[2191,10967,10968,10974,10981,10984,10990],{},[1580,10969,10970,10973],{},[1681,10971,10972],{},"Create a new Google Sheet",", add some text into column A.",[1580,10975,10976,10977,10980],{},"Click on ",[1681,10978,10979],{},"Extensions > Apps Script"," to open the Apps Script window.",[1580,10982,10983],{},"Copy the code example from this page into the Apps Script window.",[1580,10985,10986,10987,1696],{},"Insert your API key in the input noted with ",[1681,10988,10989],{},"\"insert key here\"",[1580,10991,10992,10993,1696],{},"Insert the name of the automation you wish to trigger where the text says ",[1681,10994,10995],{},"\"insert automation name here\"",[2353,10997,10999],{"className":2390,"code":10998,"language":2392,"meta":1640,"style":1640},"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",[1740,11000,11001,11010,11029,11052,11073,11093,11097,11102,11113,11125,11137,11148,11153,11157,11168,11180,11192,11210,11214,11218,11225,11243,11259,11268,11289,11294],{"__ignoreMap":1640},[2361,11002,11003,11005,11008],{"class":2363,"line":2364},[2361,11004,1613],{"class":3616},[2361,11006,11007],{"class":4003}," sendDataToAxiomAi",[2361,11009,10015],{"class":2402},[2361,11011,11012,11015,11018,11020,11023,11026],{"class":2363,"line":1644},[2361,11013,11014],{"class":3616},"  var",[2361,11016,11017],{"class":2402}," url ",[2361,11019,6580],{"class":3616},[2361,11021,11022],{"class":2371}," 'https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger'",[2361,11024,11025],{"class":2402},"; ",[2361,11027,11028],{"class":4545},"\u002F\u002F Replace with your axiom.ai endpoint\n",[2361,11030,11031,11033,11036,11038,11041,11044,11047,11050],{"class":2363,"line":1641},[2361,11032,11014],{"class":3616},[2361,11034,11035],{"class":2402}," sheet ",[2361,11037,6580],{"class":3616},[2361,11039,11040],{"class":2402}," SpreadsheetApp.",[2361,11042,11043],{"class":4003},"getActiveSpreadsheet",[2361,11045,11046],{"class":2402},"().",[2361,11048,11049],{"class":4003},"getActiveSheet",[2361,11051,4215],{"class":2402},[2361,11053,11054,11056,11059,11061,11064,11067,11070],{"class":2363,"line":3525},[2361,11055,11014],{"class":3616},[2361,11057,11058],{"class":2402}," dataRange ",[2361,11060,6580],{"class":3616},[2361,11062,11063],{"class":2402}," sheet.",[2361,11065,11066],{"class":4003},"getDataRange",[2361,11068,11069],{"class":2402},"(); ",[2361,11071,11072],{"class":4545},"\u002F\u002F Get all the data in the sheet\n",[2361,11074,11075,11077,11080,11082,11085,11088,11090],{"class":2363,"line":3531},[2361,11076,11014],{"class":3616},[2361,11078,11079],{"class":2402}," dataValues ",[2361,11081,6580],{"class":3616},[2361,11083,11084],{"class":2402}," dataRange.",[2361,11086,11087],{"class":4003},"getValues",[2361,11089,11069],{"class":2402},[2361,11091,11092],{"class":4545},"\u002F\u002F Get the values as a 2D array\n",[2361,11094,11095],{"class":2363,"line":3603},[2361,11096,3528],{"emptyLinePlaceholder":1657},[2361,11098,11099],{"class":2363,"line":3682},[2361,11100,11101],{"class":4545},"  \u002F\u002F Create the payload, passing the 2D array directly\n",[2361,11103,11104,11106,11109,11111],{"class":2363,"line":3688},[2361,11105,11014],{"class":3616},[2361,11107,11108],{"class":2402}," payload ",[2361,11110,6580],{"class":3616},[2361,11112,4018],{"class":2402},[2361,11114,11115,11118,11120,11123],{"class":2363,"line":3694},[2361,11116,11117],{"class":2371},"    \"key\"",[2361,11119,3625],{"class":2402},[2361,11121,11122],{"class":2371},"\"Insert key here\"",[2361,11124,4054],{"class":2402},[2361,11126,11127,11130,11132,11135],{"class":2363,"line":3717},[2361,11128,11129],{"class":2371},"    \"name\"",[2361,11131,3625],{"class":2402},[2361,11133,11134],{"class":2371},"\"Insert automation name here\"",[2361,11136,4054],{"class":2402},[2361,11138,11139,11142,11145],{"class":2363,"line":3770},[2361,11140,11141],{"class":2371},"    \"data\"",[2361,11143,11144],{"class":2402},": dataValues ",[2361,11146,11147],{"class":4545},"\u002F\u002F Sending the entire sheet data as an array of arrays\n",[2361,11149,11150],{"class":2363,"line":3784},[2361,11151,11152],{"class":2402},"  };\n",[2361,11154,11155],{"class":2363,"line":3160},[2361,11156,5169],{"class":2402},[2361,11158,11159,11161,11164,11166],{"class":2363,"line":3808},[2361,11160,11014],{"class":3616},[2361,11162,11163],{"class":2402}," options ",[2361,11165,6580],{"class":3616},[2361,11167,4018],{"class":2402},[2361,11169,11170,11173,11175,11178],{"class":2363,"line":3817},[2361,11171,11172],{"class":2371},"    'method'",[2361,11174,3625],{"class":2402},[2361,11176,11177],{"class":2371},"'post'",[2361,11179,4054],{"class":2402},[2361,11181,11182,11185,11187,11190],{"class":2363,"line":4160},[2361,11183,11184],{"class":2371},"    'contentType'",[2361,11186,3625],{"class":2402},[2361,11188,11189],{"class":2371},"'application\u002Fjson'",[2361,11191,4054],{"class":2402},[2361,11193,11194,11197,11199,11202,11204,11207],{"class":2363,"line":4178},[2361,11195,11196],{"class":2371},"    'payload'",[2361,11198,3625],{"class":2402},[2361,11200,11201],{"class":3512},"JSON",[2361,11203,1696],{"class":2402},[2361,11205,11206],{"class":4003},"stringify",[2361,11208,11209],{"class":2402},"(payload)\n",[2361,11211,11212],{"class":2363,"line":4186},[2361,11213,11152],{"class":2402},[2361,11215,11216],{"class":2363,"line":4192},[2361,11217,5169],{"class":2402},[2361,11219,11220,11223],{"class":2363,"line":4197},[2361,11221,11222],{"class":3616},"  try",[2361,11224,4018],{"class":2402},[2361,11226,11227,11229,11232,11234,11237,11240],{"class":2363,"line":4218},[2361,11228,10020],{"class":3616},[2361,11230,11231],{"class":2402}," response ",[2361,11233,6580],{"class":3616},[2361,11235,11236],{"class":2402}," UrlFetchApp.",[2361,11238,11239],{"class":4003},"fetch",[2361,11241,11242],{"class":2402},"(url, options);\n",[2361,11244,11245,11248,11250,11253,11256],{"class":2363,"line":4230},[2361,11246,11247],{"class":2402},"    Logger.",[2361,11249,4224],{"class":4003},[2361,11251,11252],{"class":2402},"(response.",[2361,11254,11255],{"class":4003},"getContentText",[2361,11257,11258],{"class":2402},"());\n",[2361,11260,11261,11264,11266],{"class":2363,"line":4242},[2361,11262,11263],{"class":2402},"  } ",[2361,11265,4236],{"class":3616},[2361,11267,4239],{"class":2402},[2361,11269,11270,11272,11274,11276,11279,11282,11285,11287],{"class":2363,"line":4257},[2361,11271,11247],{"class":2402},[2361,11273,4224],{"class":4003},[2361,11275,4169],{"class":2402},[2361,11277,11278],{"class":2371},"'Error: '",[2361,11280,11281],{"class":3616}," +",[2361,11283,11284],{"class":2402}," error.",[2361,11286,10041],{"class":4003},[2361,11288,11258],{"class":2402},[2361,11290,11291],{"class":2363,"line":4263},[2361,11292,11293],{"class":2402},"  }\n",[2361,11295,11296],{"class":2363,"line":4269},[2361,11297,4266],{"class":2402},[2227,11299],{"src":11300,"alt":11301},"\u002Fdocs\u002Fguides\u002Fgoogle-app-script-trigger-bot.jpg","Google App Script trigger axiom.ai bot run with API call",[1611,11303,11305],{"id":11304},"trigger-based-on-edits-to-your-sheet","Trigger based on edits to your sheet",[1567,11307],{},[1570,11309,11310],{},"Google Apps Script offers event-driven triggers that can be set up to end data to your axiom.ai automation.",[1729,11312,11313],{},[2191,11314,11315,11318,11321,11328],{},[1580,11316,11317],{},"Click \"Triggers\" in the Google Apps Script sidebar.",[1580,11319,11320],{},"Click \"Add Trigger\" to create a new trigger.",[1580,11322,11323,11324,11327],{},"Set the function to run to ",[1740,11325,11326],{},"sendDataToAxiomAi"," and the event type to \"On edit\".",[1580,11329,11330],{},"Click \"Save\".",[1570,11332,11333],{},"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.",[1562,11335,2410],{"id":2409},[1567,11337],{},[1570,11339,11340],{},"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.",[1729,11342,11343],{},[2191,11344,11345,11352],{},[1580,11346,11347,11348,11351],{},"Click the ",[1681,11349,11350],{},"'disc'"," icon to save your API call script.",[1580,11353,11354,11355,11358],{},"Click on the ",[1681,11356,11357],{},"'play'"," icon to start your script.",[2227,11360],{"src":11361,"alt":11362},"\u002Fdocs\u002Fguides\u002Fapi-call-returns-link.jpg","axiom.ai returns run status to Google Apps Script API call",[1562,11364,2430],{"id":2429},[1567,11366],{},[1570,11368,11369],{},"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.",[2445,11371,11372],{},"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":1640,"searchDepth":1641,"depth":1641,"links":11374},[11375,11376,11381,11382],{"id":2181,"depth":1644,"text":2182},{"id":10905,"depth":1644,"text":10906,"children":11377},[11378,11379,11380],{"id":10914,"depth":1641,"text":10915},{"id":10957,"depth":1641,"text":10958},{"id":11304,"depth":1641,"text":11305},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":11385,"platfrom":11386,"video":11387},[2463,2464],[8907],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FvTvXYe4niJE?rel=0&amp;","\u002Fguides\u002Fgoogle-apps-script",{"title":10861,"description":11383},"guides\u002Fgoogle-apps-script","uzxKnbORaXPdj7RKK875IB59u4f7EeRQoOP6FEzyRaE",{"id":11393,"title":11394,"body":11395,"date":2676,"description":11677,"extension":1653,"meta":11678,"navigation":1657,"order":1651,"path":11684,"seo":11685,"stem":11686,"__hash__":11687},"guides\u002Fguides\u002Fgoogle-sheets-tweeter.md","How to automate posting on X (formerly twitter) using Google Sheets",{"type":1555,"value":11396,"toc":11669},[11397,11399,11406,11408,11410,11421,11425,11438,11443,11445,11449,11579,11583,11586,11588,11592,11594,11596,11658,11662],[1567,11398],{},[1570,11400,11401,11402,11405],{},"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 ",[1681,11403,11404],{},"\"post\"",". It then deletes the processed post from the sheet, preparing for the next entry.",[1558,11407],{},[1562,11409,1676],{"id":1675},[1570,11411,1679,11412,2718,11414,1688,11417,11420],{},[1681,11413,1683],{},[1681,11415,11416],{},"\"X post\"",[1681,11418,11419],{},"\"Post\"",". Add some post data.",[1562,11422,11424],{"id":11423},"install-the-twitterx-posting-bot","Install the Twitter(x) posting bot",[1570,11426,11427,11428,11431,11432,1707,11435,1711],{},"To install this ",[1681,11429,11430],{},"\"Twitter(x)\""," posting bot click ",[1681,11433,11434],{},"\"Install template'\"",[1681,11436,11437],{},"\"Install Chrome extension'\"",[1570,11439,1714,11440,1696],{},[1681,11441,11442],{},"\"Start'\"",[1570,11444,1720],{},[1562,11446,11448],{"id":11447},"configure-your-twitterx-posting-bot-in-minutes","Configure your Twitter(x) posting bot in minutes",[1729,11450,11451],{},[1577,11452,11453,11472],{},[1580,11454,11455,1738,11457,11459],{},[1681,11456,1994],{},[1740,11458,1742],{},[1577,11460,11461,11465],{},[1580,11462,11463,1750],{},[1740,11464,1749],{},[1580,11466,11467,7518,11469,1696],{},[1740,11468,1755],{},[1740,11470,11471],{},"'Post'",[1580,11473,11474,1738,11476,11478],{},[1681,11475,2542],{},[1740,11477,667],{},[1577,11479,11480,11491,11514,11537,11550],{},[1580,11481,11482,1738,11484,11487],{},[1681,11483,2551],{},[1740,11485,11486],{},"Go to page: Twitter (X) Compose URL",[1577,11488,11489],{},[1580,11490,2617],{},[1580,11492,11493,1738,11495,11498],{},[1681,11494,2569],{},[1740,11496,11497],{},"Enter text: Tweet",[1577,11499,11500,11505],{},[1580,11501,11502,11504],{},[1740,11503,1803],{},": ^ Preconfigured",[1580,11506,11507,1780,11509,1784,11511,11513],{},[1740,11508,2587],{},[1740,11510,1783],{},[1740,11512,1874],{},", and choose the column with the post content.",[1580,11515,11516,1738,11518,11521],{},[1681,11517,2577],{},[1740,11519,11520],{},"Upload a file: Image",[1577,11522,11523,11528],{},[1580,11524,11525,11504],{},[1740,11526,11527],{},"File Input Field",[1580,11529,11530,1780,11532,1784,11534,11536],{},[1740,11531,2822],{},[1740,11533,1783],{},[1740,11535,1874],{},", and choose the column with the image path.",[1580,11538,11539,1738,11541,11544],{},[1681,11540,2593],{},[1740,11542,11543],{},"Click element: Post",[1577,11545,11546],{},[1580,11547,11548,11504],{},[1740,11549,1803],{},[1580,11551,11552,1738,11554,11556],{},[1681,11553,2601],{},[1740,11555,1928],{},[1577,11557,11558,11562,11567,11573],{},[1580,11559,11560,1750],{},[1740,11561,1749],{},[1580,11563,11564,11566],{},[1740,11565,1755],{},": Choose the tab you created for posts.",[1580,11568,11569,1810,11571,1696],{},[1740,11570,1944],{},[1740,11572,1813],{},[1580,11574,11575,1810,11577,1696],{},[1740,11576,1951],{},[1740,11578,1813],{},[1562,11580,11582],{"id":11581},"run-your-twitterx-posting-automation","Run your Twitter(x) posting automation",[1570,11584,11585],{},"We suggest running a test first, disable Step 2.4 to prevent the bot sending a post.",[1562,11587,1964],{"id":1963},[1570,11589,1967,11590,1972],{},[1596,11591,1971],{"href":1970},[1562,11593,1398],{"id":1975},[1570,11595,1978],{},[1729,11597,11598],{},[1577,11599,11600,11614,11625,11636,11647],{},[1580,11601,11602,11605,1991,11607,11610,11611,1696],{},[1681,11603,11604],{},"Loads incorrect page?",[1989,11606],{},[1740,11608,11609],{},"Step 2.1 – Go to page: Twitter (X) Compose URL",", check the URL is set to ",[1740,11612,11613],{},"https:\u002F\u002Ftwitter.com\u002Fcompose\u002Ftweet",[1580,11615,11616,11619,1991,11621,11624],{},[1681,11617,11618],{},"No message input?",[1989,11620],{},[1740,11622,11623],{},"Step 2.2 – Enter text: Tweet",", reselect the input field in the post form.",[1580,11626,11627,11630,1991,11632,11635],{},[1681,11628,11629],{},"File does not upload?",[1989,11631],{},[1740,11633,11634],{},"Step 2.3 – Upload a file: Image",", check your computer folder permissions.",[1580,11637,11638,11641,1991,11643,11646],{},[1681,11639,11640],{},"Post button not clicked?",[1989,11642],{},[1740,11644,11645],{},"Step 2.4 – Click element: Post",", reselect the post button.",[1580,11648,11649,11652,1991,11654,11657],{},[1681,11650,11651],{},"Row not removed?",[1989,11653],{},[1740,11655,11656],{},"Step 2.5 – Delete rows from a Google Sheet",", make sure the correct sheet and row range are selected.",[1570,11659,2127,11660],{},[1596,11661,2130],{"href":82},[1570,11663,11664,11665],{},"Read this if you would like to learn more about ",[1596,11666,11668],{"href":11667},"\u002Fblog\u002Fhow-to-automate-social-media-posts","posting to Social media with a bot.",{"title":1640,"searchDepth":1641,"depth":1641,"links":11670},[11671,11672,11673,11674,11675,11676],{"id":1675,"depth":1644,"text":1676},{"id":11423,"depth":1644,"text":11424},{"id":11447,"depth":1644,"text":11448},{"id":11581,"depth":1644,"text":11582},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":2945,"level":2149,"video":11679,"templateId":4178,"type":2152,"format":2153,"intent_type":2682,"intent":2683,"tags":11680,"platfrom":11681},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FY_378SXta-c",[2685,2949,2689],[11682,11683],"X","Twitter","\u002Fguides\u002Fgoogle-sheets-tweeter",{"title":11394,"description":11677},"guides\u002Fgoogle-sheets-tweeter","WT7t7Xxt9SeiAFLHV1Km31x4PsGfGZ_Lw1hPXp-t4SY",{"id":11689,"title":11690,"body":11691,"date":1651,"description":11795,"extension":1653,"meta":11796,"navigation":1657,"order":1651,"path":11800,"seo":11801,"stem":11802,"__hash__":11803},"guides\u002Fguides\u002Fhandling-dialogs.md","How to automate dialogs",{"type":1555,"value":11692,"toc":11791},[11693,11695,11698,11702,11704,11711,11757,11761,11763,11766,11773,11778,11788],[1567,11694],{},[1570,11696,11697],{},"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.",[1562,11699,11701],{"id":11700},"standard-alerts","Standard alerts",[1567,11703],{},[1570,11705,11706,11707,11710],{},"By default, axiom.ai will automatically dismiss most dialogs that are created using the standard ",[1740,11708,11709],{},"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:",[2353,11712,11714],{"className":2390,"code":11713,"language":2392,"meta":1640,"style":1640},"page.on('dialog', async dialog => {\n    await dialog.dismiss();\n})\n",[1740,11715,11716,11740,11753],{"__ignoreMap":1640},[2361,11717,11718,11721,11723,11725,11728,11730,11733,11736,11738],{"class":2363,"line":2364},[2361,11719,11720],{"class":2402},"page.",[2361,11722,3487],{"class":4003},[2361,11724,4169],{"class":2402},[2361,11726,11727],{"class":2371},"'dialog'",[2361,11729,3634],{"class":2402},[2361,11731,11732],{"class":3616},"async",[2361,11734,11735],{"class":2367}," dialog",[2361,11737,4831],{"class":3616},[2361,11739,4018],{"class":2402},[2361,11741,11742,11745,11748,11751],{"class":2363,"line":1644},[2361,11743,11744],{"class":3616},"    await",[2361,11746,11747],{"class":2402}," dialog.",[2361,11749,11750],{"class":4003},"dismiss",[2361,11752,4215],{"class":2402},[2361,11754,11755],{"class":2363,"line":1641},[2361,11756,6661],{"class":2402},[1562,11758,11760],{"id":11759},"non-standard-dialogs","Non-standard dialogs",[1567,11762],{},[1570,11764,11765],{},"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.",[1570,11767,11768,11769,1696],{},"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 ",[1596,11770,11772],{"href":11771},"\u002Fblog\u002Fbest-custom-css-selectors-for-web-scraping","Best Custom CSS Selectors for Web Scraping",[10481,11774,11775],{},[1570,11776,11777],{},"💡 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.",[1570,11779,11780,11781,11783,11784,11787],{},"Once you have this selector, this can be added into a ",[1596,11782,5254],{"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 ",[1596,11785,11786],{"href":1383},"Custom CSS selectors"," documentation. This step should be added in the location where you most likely expect the dialog to display.",[2445,11789,11790],{},"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":1640,"searchDepth":1641,"depth":1641,"links":11792},[11793,11794],{"id":11700,"depth":1644,"text":11701},{"id":11759,"depth":1644,"text":11760},"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":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2683,"tags":11797,"platfrom":11799},[8886,11798],"dialog",[3387],"\u002Fguides\u002Fhandling-dialogs",{"title":11690,"description":11795},"guides\u002Fhandling-dialogs","EVyhLP8WY1ToJsS23dKu8ILnzLlNcLVZnsCdqsSLuio",{"id":11805,"title":11806,"body":11807,"date":12074,"description":12075,"extension":1653,"meta":12076,"navigation":1657,"order":1651,"path":12081,"seo":12082,"stem":12083,"__hash__":12084},"guides\u002Fguides\u002Fhow-to-automate-apollo-crm.md","How to automate Apollo.io CRM",{"type":1555,"value":11808,"toc":12066},[11809,11811,11825,11827,11831,11834,11838,11845,11849,11851,11855,11913,11917,11924,11928,11932,11934,11938,12062],[1567,11810],{},[1570,11812,11813,11814,11817,11818,11821,11822,11824],{},"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 ",[1681,11815,11816],{},"\"Save\"",", and then clicks ",[1681,11819,11820],{},"\"Add to Lists.\""," Finally, the bot enters the name of the list and clicks  ",[1681,11823,11816],{}," again. You can configure the bot to loop through as many pages as you want, adding more and more prospects to your lists.",[1558,11826],{},[1562,11828,11830],{"id":11829},"get-started-set-up-you-apolloio-search-page","Get started: Set up you Apollo.io search page",[1570,11832,11833],{},"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.",[1562,11835,11837],{"id":11836},"install-the-apolloio-bot","Install the Apollo.io bot",[1570,11839,11840,11841,1707,11843,1711],{},"To install this Apollo.io bot click ",[1681,11842,1706],{},[1681,11844,1710],{},[1570,11846,1714,11847,1696],{},[1681,11848,1717],{},[1570,11850,1720],{},[1562,11852,11854],{"id":11853},"configure-your-apolloio-bot-in-three-easy-steps","Configure your Apollo.io bot in three easy steps",[1729,11856,11857,11911],{},[1577,11858,11859,11873,11879,11892,11897],{},[1580,11860,11861,1738,11863,11866],{},[1681,11862,1994],{},[1740,11864,11865],{},"Go to page: Search",[1577,11867,11868],{},[1580,11869,11870,11872],{},[1740,11871,1779],{},": Insert Apollo.io search URL.",[1580,11874,11875,11878],{},[1681,11876,11877],{},"2.0 – 4.0"," ^",[1580,11880,11881,1738,11883,11885],{},[1681,11882,6952],{},[1740,11884,329],{},[1577,11886,11887],{},[1580,11888,11889,11891],{},[1740,11890,2587],{},": Add the list name.",[1580,11893,11894,11878],{},[1681,11895,11896],{},"6.0 – 7.0",[1580,11898,11899,1738,11901,11904],{},[1681,11900,7060],{},[1740,11902,11903],{},"Jump to another step: Repeat",[1577,11905,11906],{},[1580,11907,11908,11910],{},[1740,11909,7239],{},": Set the number of loops you wish to make.",[1570,11912,2617],{},[1562,11914,11916],{"id":11915},"run-your-apolloio-bot","Run your Apollo.io bot",[1570,11918,11919,11920,11923],{},"To test this bot, we recommend limiting the loops to a maximum of 3. This can be done in Step 9.0, ",[1681,11921,11922],{},"\"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.",[1562,11925,11927],{"id":11926},"customize-your-apolloio-template","Customize your Apollo.io template",[1570,11929,1967,11930,1972],{},[1596,11931,1971],{"href":1970},[1562,11933,1398],{"id":1975},[1570,11935,2642,11936,1696],{},[1596,11937,2627],{"href":638},[1729,11939,11940],{},[1577,11941,11942,11952,11970,11985,11998,12012,12027,12038,12049],{},[1580,11943,11944,11947,11949,11950,2862],{},[1681,11945,11946],{},"Not loading a filtered search?",[1989,11948],{},"\nMake sure filters are set in Apollo, then copy the full search URL into the ",[1740,11951,1043],{},[1580,11953,11954,11957,1991,11959,11962,11963,11966,11967],{},[1681,11955,11956],{},"Not selecting people?",[1989,11958],{},[1740,11960,11961],{},"Step 2.0 – Click element",", try reselecting the button using the custom selector ",[1740,11964,11965],{},".finder-select-multiple-entities-button",". ",[1596,11968,11969],{"href":1383},"See how",[1580,11971,11972,11975,1991,11977,11980,11981,11984],{},[1681,11973,11974],{},"Not clicking \"Select this page\"?",[1989,11976],{},[1740,11978,11979],{},"Step 3.0 – Click element",", use the ",[1596,11982,11983],{"href":1391},"'Element text'"," option to target the exact \"Select this page\" button.",[1580,11986,11987,11990,1991,11992,11995,11996,1696],{},[1681,11988,11989],{},"Save button not working?",[1989,11991],{},[1740,11993,11994],{},"Step 4.0 – Click element",", reselect the \"Save\" button when people are selected, or try using ",[1596,11997,11983],{"href":1391},[1580,11999,12000,12003,1991,12005,12008,12009,1696],{},[1681,12001,12002],{},"Select list not opening?",[1989,12004],{},[1740,12006,12007],{},"Step 5.0 – Select list",", try reselecting the dropdown using this custom selector: ",[1740,12010,12011],{},"div[role=\"dialog\"] .zp-select-indicators",[1580,12013,12014,12017,1991,12019,12022,12023,12026],{},[1681,12015,12016],{},"Not saving to list?",[1989,12018],{},[1740,12020,12021],{},"Step 6.0 – Press key(s)",", re-record the ",[1740,12024,12025],{},"Enter"," keystroke.",[1580,12028,12029,12032,1991,12034,12037],{},[1681,12030,12031],{},"Bot skips before saving is complete?",[1989,12033],{},[1740,12035,12036],{},"Step 7.0 – Wait",", increase the wait time to allow saving to finish.",[1580,12039,12040,12043,1991,12045,12048],{},[1681,12041,12042],{},"Next button not working?",[1989,12044],{},[1740,12046,12047],{},"Step 8.0 – Click element",", reselect the \"Next\" button at the bottom of the table.",[1580,12050,12051,12054,1991,12056,12059,12060,1696],{},[1681,12052,12053],{},"Jumping to wrong step?",[1989,12055],{},[1740,12057,12058],{},"Step 9.0 – Jump to another step",", check that it jumps to ",[1740,12061,2542],{},[1570,12063,2127,12064],{},[1596,12065,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":12067},[12068,12069,12070,12071,12072,12073],{"id":11829,"depth":1644,"text":11830},{"id":11836,"depth":1644,"text":11837},{"id":11853,"depth":1644,"text":11854},{"id":11915,"depth":1644,"text":11916},{"id":11926,"depth":1644,"text":11927},{"id":1975,"depth":1644,"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":3158,"level":2149,"video":12077,"templateId":6355,"type":2152,"format":2153,"intent_type":2682,"intent":2461,"tags":12078,"platfrom":12079},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fu5t_Eq9IKBI",[2688],[12080],"Apollo","\u002Fguides\u002Fhow-to-automate-apollo-crm",{"title":11806,"description":12075},"guides\u002Fhow-to-automate-apollo-crm","rJD2Z0amhNdWU17YHKZjG_tbbJTX5a5GerytGQkYH08",{"id":12086,"title":12087,"body":12088,"date":12240,"description":12241,"extension":1653,"meta":12242,"navigation":1657,"order":1651,"path":12249,"seo":12250,"stem":12251,"__hash__":12252},"guides\u002Fguides\u002Fhow-to-automate-file-downloads.md","How to automate file downloads",{"type":1555,"value":12089,"toc":12233},[12090,12092,12095,12097,12101,12104,12106,12108,12112,12160,12164,12167,12169,12181,12183,12185,12224],[1567,12091],{},[1570,12093,12094],{},"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,12096],{},[1562,12098,12100],{"id":12099},"install-the-file-download-bot","Install the File download bot",[1570,12102,12103],{},"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.",[1570,12105,2510],{},[1570,12107,1720],{},[1562,12109,12111],{"id":12110},"configure-your-file-download-bot-in-a-minute","Configure your File download bot in a minute",[1729,12113,12114],{},[1577,12115,12116,12133],{},[1580,12117,12118,1738,12120,12122],{},[1681,12119,1994],{},[1740,12121,1043],{},[1577,12123,12124],{},[1580,12125,12126,1780,12128,1784,12130,12132],{},[1740,12127,1779],{},[1740,12129,1783],{},[1740,12131,1787],{},", and choose the column containing the links.",[1580,12134,12135,1738,12137,12140],{},[1681,12136,2542],{},[1740,12138,12139],{},"Download files",[1577,12141,12142,12147,12151,12155],{},[1580,12143,12144,12146],{},[1740,12145,1803],{},": Point and click to select the files you wish to download.",[1580,12148,12149,3269],{},[1740,12150,3268],{},[1580,12152,12153,3275],{},[1740,12154,3274],{},[1580,12156,12157,3275],{},[1740,12158,12159],{},"Force download",[1562,12161,12163],{"id":12162},"run-your-file-download-bot","Run your File download bot",[1570,12165,12166],{},"We suggest running a test first, stopping the bot after a few downloads and checking the files.",[1562,12168,1964],{"id":1963},[1570,12170,1967,12171,12173,12174,12177,12178,1696],{},[1596,12172,1971],{"href":1970},", 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 ",[1596,12175,12176],{"href":996},"download to Google Drive"," step. We also have steps to ",[1596,12179,12180],{"href":1154},"automate screenshots",[1562,12182,1398],{"id":1975},[1570,12184,1978],{},[1729,12186,12187],{},[1577,12188,12189,12198,12206],{},[1580,12190,12191,12193,12195,12196,1696],{},[1681,12192,2008],{},[1989,12194],{},"\nTry re-selecting or using ",[1596,12197,9093],{"href":1383},[1580,12199,12200,12203,12205],{},[1681,12201,12202],{},"Files do not download?",[1989,12204],{},"\nCheck the folder permission on your computer.",[1580,12207,12208,12211,12213,12214,12218,12219,1696],{},[1681,12209,12210],{},"Does the file open in a window?",[1989,12212],{},"\nThis is default browser behavior. You can’t override it, but there is a workaround — ",[1596,12215,12217],{"href":12216},"\u002Fdocs\u002Fadjusting-how-axiom-runs#using-a-custom-chromium-profile","create a Chrome Profile"," and change the default download setting for the ",[1596,12220,12223],{"href":12221,"rel":12222},"https:\u002F\u002Fsupport.google.com\u002Fchrome\u002Fanswer\u002F95759?hl=en-GB&co=GENIE.Platform%3DDesktop",[3874],"profile",[1570,12225,2127,12226,12228,12229],{},[1596,12227,2130],{"href":82},"\nLearn how to create a bot from scratch to download files from a website by ",[1596,12230,12232],{"href":12231},"\u002Fblog\u002Fhow-to-automate-downloadin-a-file-from-a-website","clicking here.",{"title":1640,"searchDepth":1641,"depth":1641,"links":12234},[12235,12236,12237,12238,12239],{"id":12099,"depth":1644,"text":12100},{"id":12110,"depth":1644,"text":12111},{"id":12162,"depth":1644,"text":12163},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":2945,"level":2149,"video":12243,"templateId":6365,"type":2152,"format":2153,"intent_type":3384,"intent":12244,"tags":12245,"platfrom":12248},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FkuMuOQzietM","Upload and download files",[12246,12247],"files","download",[3387],"\u002Fguides\u002Fhow-to-automate-file-downloads",{"title":12087,"description":12241},"guides\u002Fhow-to-automate-file-downloads","vGM8xcIDtAReyTNraHgFD9L4B_nR-LkcUk5QWKKpJQ0",{"id":12254,"title":12255,"body":12256,"date":1651,"description":12379,"extension":1653,"meta":12380,"navigation":1657,"order":1651,"path":12383,"seo":12384,"stem":12385,"__hash__":12386},"guides\u002Fguides\u002Fhow-to-clear-text-from-a-field.md","How to clear text from an Input Field",{"type":1555,"value":12257,"toc":12374},[12258,12260,12267,12277,12281,12287,12291,12297,12345,12353,12360,12362],[1567,12259],{},[1570,12261,12262,12263,12266],{},"When automating form filling, you may encounter input fields that are already populated with default values. The ",[1596,12264,12265],{"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.",[1570,12268,12269,12270,2094,12273,12276],{},"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 ",[1681,12271,12272],{},"\"Click element\"",[1681,12274,12275],{},"\"Press key(s)\""," steps.",[1562,12278,12280],{"id":12279},"insert-the-following-steps-into-your-automation","Insert the following steps into your automation",[1570,12282,12283,12284,12286],{},"Assuming you have a bot set up in axiom.ai. insert the following steps before the ",[1681,12285,12265],{}," step you wish to enter a value with. Using the step finder add the following steps.",[1562,12288,12290],{"id":12289},"clear-an-input-before-entering-new-text","Clear an input before entering new text",[1570,12292,12293,12294,12296],{},"To clear an input field before using an ",[1681,12295,12265],{}," step, insert the following two steps directly beforehand:",[1729,12298,12299],{},[1577,12300,12301,12318],{},[1580,12302,12303,12306],{},[1681,12304,12305],{},"Step 1.0 - Click element: Focus input",[1577,12307,12308],{},[1580,12309,12310,1780,12312,12314,12315,1696],{},[1740,12311,1803],{},[1681,12313,8855],{},", highlight the input field you wish to clear, then press ",[1681,12316,12317],{},"\"Complete\"",[1580,12319,12320,12323],{},[1681,12321,12322],{},"Step 2.0 - Press key(s): Clear value",[1577,12324,12325],{},[1580,12326,12327,6963,12329,12332,12333,12336,12337,12340,12341,12344],{},[1740,12328,6962],{},[1681,12330,12331],{},"\"Record\"",", tap the right arrow key repeatedly (",[1740,12334,12335],{},"→→→→→→→→→→",") to move the cursor to the end, then press delete (",[1740,12338,12339],{},"⌦⌦⌦⌦⌦⌦⌦⌦⌦","). Click ",[1681,12342,12343],{},"\"Stop recording\""," when done.",[1570,12346,12347,12348,12352],{},"💡 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 ",[1596,12349,12351],{"href":12350},"\u002Fguides\u002Fkeyboard-short-cuts","useful shortcuts"," to discover.",[1570,12354,12355,12356,12359],{},"That's it! Assuming your ",[1681,12357,12358],{},"\"Enter Text\""," step is next, the input field will now be cleared, and the new data will be entered without any issues.",[1562,12361,2430],{"id":2429},[1570,12363,12364,12365,12367,12368,12373],{},"This is a simple way to clear prepopulated text in form automation. You can empty an input field by employing the \"",[1681,12366,5254],{},"\" and \"",[1681,12369,12370],{},[1596,12371,12372],{"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":1640,"searchDepth":1641,"depth":1641,"links":12375},[12376,12377,12378],{"id":12279,"depth":1644,"text":12280},{"id":12289,"depth":1644,"text":12290},{"id":2429,"depth":1644,"text":2430},"Learn how to clear text from an Input Field using the Press key(s) step.",{"pinned":1657,"type":2152,"format":1729,"intent_type":2154,"intent":8904,"tags":12381,"platfrom":12382},[2688],[3387],"\u002Fguides\u002Fhow-to-clear-text-from-a-field",{"title":12255,"description":12379},"guides\u002Fhow-to-clear-text-from-a-field","pUAqiXl4H3c1QPPm4otHZrEhDcNhP8CIUtNW8Rj0lNQ",{"id":12388,"title":12389,"body":12390,"date":1651,"description":12751,"extension":1653,"meta":12752,"navigation":1657,"order":1651,"path":12755,"seo":12756,"stem":12757,"__hash__":12758},"guides\u002Fguides\u002Fhow-to-combine-variables.md","How to combine Tokens (variables) into one",{"type":1555,"value":12391,"toc":12733},[12392,12394,12397,12400,12404,12407,12411,12417,12421,12425,12467,12471,12477,12481,12485,12497,12503,12507,12579,12583,12586,12589,12596,12600,12604,12611,12614,12618,12661,12665,12689,12692,12703,12707,12710,12728,12731],[1567,12393],{},[1570,12395,12396],{},"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.",[1570,12398,12399],{},"As ever, there is more than one way! That's why axiom.ai is so powerful.",[1562,12401,12403],{"id":12402},"what-are-tokens-in-axiomai","What are tokens in axiom.ai?",[1570,12405,12406],{},"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.",[1562,12408,12410],{"id":12409},"method-one-the-append-or-merge-data-step","Method one: the Append or merge data step",[1570,12412,6680,12413,12416],{},[1740,12414,12415],{},"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.",[2227,12418],{"src":12419,"alt":12420},"\u002Fguides\u002Fcombine-vars-append-data.webp","Axiom.ai Append or merge data step axiom.ai",[1611,12422,12424],{"id":12423},"how-to-use-the-append-or-merge-data-step","How to use the Append or merge data step",[1729,12426,12427],{},[1577,12428,12429],{},[1580,12430,12431,1738,12433,12435],{},[1681,12432,1994],{},[1740,12434,12415],{},[1577,12436,12437,12442,12447],{},[1580,12438,12439,12441],{},[1681,12440,1870],{}," — Select the first data set (e.g., a scraped ticket URL).",[1580,12443,12444,12446],{},[1681,12445,1880],{}," — Select the second data set to combine (e.g., ChatGPT output or a timestamp).",[1580,12448,12449,12452,12453],{},[1681,12450,12451],{},"Append mode"," — Choose how to combine the data:\n",[1577,12454,12455,12461],{},[1580,12456,12457,12460],{},[1740,12458,12459],{},"\"Horizontally\""," joins values side-by-side",[1580,12462,12463,12466],{},[1740,12464,12465],{},"\"Vertically\""," stacks values top-to-bottom",[1611,12468,12470],{"id":12469},"tip","Tip",[1570,12472,12473,12474,12476],{},"💡 You can chain multiple ",[1740,12475,12415],{}," steps if you need to combine more than two values.",[1562,12478,12480],{"id":12479},"method-two-the-loop-step","Method two: The loop step",[2227,12482],{"src":12483,"alt":12484},"\u002Fguides\u002Fjoin-vars-with-loop-step.webp","Join data variables using loop step axiom.ai",[1570,12486,6680,12487,12489,12490,12492,12493,12496],{},[1740,12488,667],{}," step is most commonly used to repeat actions—like scraping a list of URLs.",[1989,12491],{},"\nBut it has a powerful hidden feature: ",[1681,12494,12495],{},"it can be used to combine data from multiple steps"," even when you’re not looping.",[1570,12498,12499,12500,12502],{},"Any steps that output data, when placed inside a ",[1740,12501,667],{}," block, will have their data combined into a single output token.",[1611,12504,12506],{"id":12505},"how-to-use-this-trick","How to use this trick",[1729,12508,12509],{},[1577,12510,12511,12530,12546,12561],{},[1580,12512,12513,1738,12515,12517],{},[1681,12514,1994],{},[1740,12516,667],{},[1577,12518,12519,12524],{},[1580,12520,12521,12523],{},[1681,12522,667],{}," — Leave this empty or toggle it off.",[1580,12525,12526,12529],{},[1681,12527,12528],{},"Purpose"," — You are not looping; you're using the loop as a container to combine outputs.",[1580,12531,12532,1738,12535,12538],{},[1681,12533,12534],{},"Step 1.1",[1740,12536,12537],{},"Step that outputs data",[1577,12539,12540],{},[1580,12541,12542,12543,7591],{},"Add any step that returns data (e.g. ",[1740,12544,12545],{},"Get data from current page",[1580,12547,12548,1738,12551,12554],{},[1681,12549,12550],{},"Step 1.2",[1740,12552,12553],{},"Another step that outputs data",[1577,12555,12556],{},[1580,12557,12558,12559,7591],{},"Add another step that returns data (e.g. ",[1740,12560,9149],{},[1580,12562,12563,12566],{},[1681,12564,12565],{},"Outside the loop",[1577,12567,12568,12573],{},[1580,12569,12570,12571,2862],{},"Use the token from the ",[1740,12572,667],{},[1580,12574,12575,12576,1696],{},"This token contains combined data from all steps inside the loop, appended ",[1681,12577,12578],{},"horizontally",[1611,12580,12582],{"id":12581},"when-to-use-this","When to use this",[1570,12584,12585],{},"This trick is useful when merging data from multiple steps to write into a Google Sheet.",[1611,12587,12470],{"id":12588},"tip-1",[1570,12590,12591,12592,12595],{},"⚠️ The combined data is only available ",[1681,12593,12594],{},"outside"," the loop.",[1562,12597,12599],{"id":12598},"method-three-the-javascript-step","Method three: The JavaScript step",[2227,12601],{"src":12602,"alt":12603},"\u002Fguides\u002Fjoin-vars-javascript.webp","Join data variables using a JavaScript step",[1570,12605,12606,12607,12610],{},"If you're comfortable with code, the ",[1740,12608,12609],{},"JavaScript"," step is a powerful way to manipulate and combine data however you like.",[1570,12612,12613],{},"You can use it to join variables, restructure arrays, clean data, or return a custom output—all inside one step.",[1611,12615,12617],{"id":12616},"how-to-use-it","How to use it",[1729,12619,12620],{},[1577,12621,12622],{},[1580,12623,12624,1738,12626,12628],{},[1681,12625,1994],{},[1740,12627,12609],{},[1577,12629,12630,12637,12646,12652],{},[1580,12631,12632,12634,12635,2862],{},[1681,12633,2245],{}," — Open the step finder and insert the ",[1740,12636,12609],{},[1580,12638,12639,12642,12643,12645],{},[1681,12640,12641],{},"Declare tokens"," — Use the ",[1740,12644,1783],{}," menu to select tokens and assign them to variables.",[1580,12647,12648,12651],{},[1681,12649,12650],{},"Write your logic"," — Combine, transform, or filter the data however you like.",[1580,12653,12654,12657,12658,12660],{},[1681,12655,12656],{},"Return output"," — Use ",[1740,12659,4597],{}," to output a single value or an array of values.",[1611,12662,12664],{"id":12663},"example","Example",[2353,12666,12668],{"className":2390,"code":12667,"language":2392,"meta":1640,"style":1640},"var links = [custom-data].flat();\nvar dates = [custom-data_1].flat();\n\nreturn [[...links, ...dates]];\n",[1740,12669,12670,12675,12680,12684],{"__ignoreMap":1640},[2361,12671,12672],{"class":2363,"line":2364},[2361,12673,12674],{},"var links = [custom-data].flat();\n",[2361,12676,12677],{"class":2363,"line":1644},[2361,12678,12679],{},"var dates = [custom-data_1].flat();\n",[2361,12681,12682],{"class":2363,"line":1641},[2361,12683,3528],{"emptyLinePlaceholder":1657},[2361,12685,12686],{"class":2363,"line":3525},[2361,12687,12688],{},"return [[...links, ...dates]];\n",[1611,12690,12470],{"id":12691},"tip-2",[1577,12693,12694,12697,12700],{},[1580,12695,12696],{},"You can return a single value or an array.",[1580,12698,12699],{},"The result can be used as input for steps like \"Write to a Google Sheet\".",[1580,12701,12702],{},"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.",[1562,12704,12706],{"id":12705},"wrapping-up-axiomai-is-a-flexible-tool","Wrapping up: axiom.ai is a flexible tool",[1570,12708,12709],{},"We designed axiom.ai to be flexible, which means there is often more than one way to solve a problem.",[1577,12711,12712,12718,12723],{},[1580,12713,12714,12715,12717],{},"If you only need to combine two tokens, use the ",[1740,12716,12415],{}," step",[1580,12719,12720,12721,12717],{},"If you want to output multiple values into a single row, use the ",[1740,12722,667],{},[1580,12724,12725,12726,12717],{},"If you need full control over how data is combined or transformed, use the ",[1740,12727,12609],{},[1570,12729,12730],{},"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.",[2445,12732,6509],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":12734},[12735,12736,12740,12745,12750],{"id":12402,"depth":1644,"text":12403},{"id":12409,"depth":1644,"text":12410,"children":12737},[12738,12739],{"id":12423,"depth":1641,"text":12424},{"id":12469,"depth":1641,"text":12470},{"id":12479,"depth":1644,"text":12480,"children":12741},[12742,12743,12744],{"id":12505,"depth":1641,"text":12506},{"id":12581,"depth":1641,"text":12582},{"id":12588,"depth":1641,"text":12470},{"id":12598,"depth":1644,"text":12599,"children":12746},[12747,12748,12749],{"id":12616,"depth":1641,"text":12617},{"id":12663,"depth":1641,"text":12664},{"id":12691,"depth":1641,"text":12470},{"id":12705,"depth":1644,"text":12706},"Learn how to combine tokens variables from multiple steps into a single output in axiom.ai using append, loop, or JavaScript steps.",{"pinned":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":12753,"platfrom":12754},[3468],[3387],"\u002Fguides\u002Fhow-to-combine-variables",{"title":12389,"description":12751},"guides\u002Fhow-to-combine-variables","rdYvcaI2u72hIerXMiaSCTu-MC9AbT3jD8h4WecCUn0",{"id":12760,"title":12761,"body":12762,"date":1651,"description":13104,"extension":1653,"meta":13105,"navigation":1657,"order":1651,"path":13111,"seo":13112,"stem":13113,"__hash__":13114},"guides\u002Fguides\u002Fhow-to-dm-on-instagram.md","How to automate Instagram DM's",{"type":1555,"value":12763,"toc":13099},[12764,12766,12774],[1567,12765],{},[1570,12767,12768,12769,12773],{},"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 ",[1596,12770,12772],{"href":12771},"\u002Fguides\u002Finstagram-dm-like","one-click setup"," template you can use instead of this guide.",[12775,12776,12777,12781,12784,12819,12821,12835,13077,13090,13092],"zero-set-up",{},[1562,12778,12780],{"id":12779},"create-a-blank-google-sheet","Create a blank Google Sheet",[1570,12782,12783],{},"Create a Google Sheet, in Col A add links to profiles and in Col B insert your DM.",[8690,12785,12786,12795],{},[8693,12787,12788],{},[8696,12789,12790,12792],{},[8699,12791,5163],{},[8699,12793,12794],{},"B",[8706,12796,12797,12808],{},[8696,12798,12799,12805],{},[8711,12800,12801],{},[1596,12802,12803],{"href":12803,"rel":12804},"https:\u002F\u002Fwww.instagram.com\u002Falfiesmith81\u002F",[3874],[8711,12806,12807],{},"My custom message 1",[8696,12809,12810,12816],{},[8711,12811,12812],{},[1596,12813,12814],{"href":12814,"rel":12815},"https:\u002F\u002Fwww.instagram.com\u002Faxiom.ai\u002F",[3874],[8711,12817,12818],{},"My custom message 2",[1562,12820,8731],{"id":8730},[1570,12822,12823,12824,12828,12829,8740,12831,12834],{},"In the ",[1596,12825,5052],{"href":12826,"rel":12827},"http:\u002F\u002Faxiom.ai",[3874]," Chrome extension, click ",[1681,12830,8739],{},[1681,12832,12833],{},"Start from Blank\"."," Use the step finder to add the steps outlined below.",[1729,12836,12837],{},[1577,12838,12839,12869],{},[1580,12840,12841,1738,12843,12845],{},[1681,12842,1994],{},[1740,12844,1742],{},[1577,12846,12847,12851,12855,12862],{},[1580,12848,12849,1750],{},[1740,12850,1749],{},[1580,12852,12853,9563],{},[1740,12854,1755],{},[1580,12856,12857,12859,12860,1696],{},[1740,12858,8780],{},": Start from a specified column and row, e.g., ",[1740,12861,8784],{},[1580,12863,12864,12866,12867,1696],{},[1740,12865,6877],{},": End at a specified column and row, e.g., ",[1740,12868,8792],{},[1580,12870,12871,1738,12873,12875,12885],{},[1681,12872,2542],{},[1740,12874,667],{},[1577,12876,12877],{},[1580,12878,12879,1780,12881,1784,12883,1696],{},[1740,12880,667],{},[1740,12882,1841],{},[1740,12884,1787],{},[1577,12886,12887,12903,12920,13046],{},[1580,12888,12889,1738,12891,12894],{},[1681,12890,2551],{},[1740,12892,12893],{},"Go to page: Instagram profile",[1577,12895,12896],{},[1580,12897,12898,1780,12900,12902],{},[1740,12899,1779],{},[1740,12901,1841],{},", select the column with Instagram profile links.",[1580,12904,12905,1738,12907,12909],{},[1681,12906,2569],{},[1740,12908,1796],{},[1577,12910,12911],{},[1580,12912,12913,12915,12916,12919],{},[1740,12914,1803],{},": Use the ",[1596,12917,12918],{"href":1377},"Selector Tool"," to select the header containing the Message button.",[1580,12921,12922,1738,12924,12927,12950],{},[1681,12923,2577],{},[1740,12925,12926],{},"If condition: Check for Message button",[1577,12928,12929,12935,12944],{},[1580,12930,12931,1908,12933,1696],{},[1740,12932,7884],{},[1740,12934,1845],{},[1580,12936,12937,12939,12940,12943],{},[1740,12938,7899],{},": Insert text ",[1740,12941,12942],{},"\"Message\""," (localise if needed).",[1580,12945,12946,12949],{},[1740,12947,12948],{},"Reverse condition",": Set to \"Run steps if condition is true\".",[1577,12951,12952,12974,12982,13003,13011,13031],{},[1580,12953,12954,1738,12957,12960],{},[1681,12955,12956],{},"Step 2.3.1",[1740,12958,12959],{},"Click element: Message",[1577,12961,12962,12967],{},[1580,12963,12964,12966],{},[1740,12965,1803],{},": Highlight the Message button.",[1580,12968,12969,1810,12971,12973],{},[1740,12970,269],{},[1740,12972,5266],{},", enable \"Use element text instead of HTML\", click \"Complete\".",[1580,12975,12976,1738,12979,11878],{},[1681,12977,12978],{},"Step 2.3.2",[1740,12980,12981],{},"Wait: For DM dialog to appear",[1580,12983,12984,1738,12987,12990],{},[1681,12985,12986],{},"Step 2.3.3",[1740,12988,12989],{},"Click element: Dismiss dialog",[1577,12991,12992,12997],{},[1580,12993,12994,12996],{},[1740,12995,1803],{},": Highlight the ‘Not now’ button.",[1580,12998,12999,1810,13001,12973],{},[1740,13000,269],{},[1740,13002,5266],{},[1580,13004,13005,1738,13008,11878],{},[1681,13006,13007],{},"Step 2.3.4",[1740,13009,13010],{},"Wait: For dialog to close",[1580,13012,13013,1738,13016,13019],{},[1681,13014,13015],{},"Step 2.3.5",[1740,13017,13018],{},"Enter text: DM message",[1577,13020,13021],{},[1580,13022,13023,1780,13025,13027,13028,13030],{},[1740,13024,2587],{},[1740,13026,1841],{},", select the message column from ",[1740,13029,1787],{}," (usually column B).",[1580,13032,13033,1738,13036,13039],{},[1681,13034,13035],{},"Step 2.3.6",[1740,13037,13038],{},"Press key(s): Send DM",[1577,13040,13041],{},[1580,13042,13043,13045],{},[1740,13044,6966],{},": Press \"Return\", then click \"Stop recording\".",[1580,13047,13048,1738,13050,13052],{},[1681,13049,2593],{},[1740,13051,1928],{},[1577,13053,13054,13058,13062,13070],{},[1580,13055,13056,1750],{},[1740,13057,1749],{},[1580,13059,13060,9563],{},[1740,13061,1755],{},[1580,13063,13064,13067,13068,1696],{},[1740,13065,13066],{},"First row to delete",": Leave set to ",[1740,13069,1813],{},[1580,13071,13072,13067,13075,1696],{},[1740,13073,13074],{},"Last row to delete",[1740,13076,1813],{},[1570,13078,13079,13080,2045,13083,13085,13086,13089],{},"💡 For testing, set ",[1740,13081,13082],{},"\"Last cell\"",[1740,13084,8792],{}," to send a single DM. To send more, increase to ",[1740,13087,13088],{},"\"AB10\""," etc. Instagram has limits — avoid getting blocked.",[1562,13091,2430],{"id":2429},[1570,13093,13094,13095,13098],{},"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 ",[1596,13096,13097],{"href":12771},"Instagram template"," that can be set up with a single click.",{"title":1640,"searchDepth":1641,"depth":1641,"links":13100},[13101,13102,13103],{"id":12779,"depth":1644,"text":12780},{"id":8730,"depth":1644,"text":8731},{"id":2429,"depth":1644,"text":2430},"A Step by step guide how to contruct a bot to autoamte sending direct messages on Instagram.",{"pinned":1657,"type":2152,"format":1729,"intent_type":13106,"intent":2683,"tags":13107,"platfrom":13109},"usacase",[13108,2686],"social media",[13110],"Instagram","\u002Fguides\u002Fhow-to-dm-on-instagram",{"title":12761,"description":13104},"guides\u002Fhow-to-dm-on-instagram","S7erdMR8rGd28tmr3LFTugvRH_qqYzR7IQLmPCMj0Mw",{"id":13116,"title":13117,"body":13118,"date":1651,"description":13124,"extension":1653,"meta":13395,"navigation":1657,"order":1651,"path":13399,"seo":13400,"stem":13401,"__hash__":13402},"guides\u002Fguides\u002Fhow-to-loop-through-data-in-cells.md","How to loop through data in cells",{"type":1555,"value":13119,"toc":13388},[13120,13122,13125,13128,13131,13135,13138,13141,13145,13149,13152,13163,13167,13174,13183,13191,13199,13206,13210,13214,13217,13351,13354,13356,13359,13362,13382,13385],[1567,13121],{},[1570,13123,13124],{},"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.",[1570,13126,13127],{},"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.",[1570,13129,13130],{},"Let’s dive in.",[1562,13132,13134],{"id":13133},"how-to-set-up-your-data","How to set up your data",[1570,13136,13137],{},"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.",[1570,13139,13140],{},"For example, in column C you might store sizes like this:",[2227,13142],{"src":13143,"alt":13144},"\u002Fguides\u002Fgoogle-cell-data.webp","How to set up you data separated by a delimiter.",[1562,13146,13148],{"id":13147},"when-to-use-this-method","When to use this method",[1570,13150,13151],{},"Use this approach when:",[1577,13153,13154,13157,13160],{},[1580,13155,13156],{},"You need to tick multiple checkboxes.",[1580,13158,13159],{},"You need to select multiple dropdown options.",[1580,13161,13162],{},"You are automating product variants, tags, permissions, or categories.",[1562,13164,13166],{"id":13165},"what-steps-we-will-use","What steps we will use",[1570,13168,13169,13170,13173],{},"First, we import the source data using the ",[1596,13171,13172],{"href":1640},"Read data from Google Sheet"," step. This gives us access to all product values stored in the sheet.",[1570,13175,13176,13177,13182],{},"Next, we use the ",[1596,13178,13181],{"href":13179,"rel":13180},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Floop",[3874],"Loop through data step"," to process each row individually.",[1570,13184,13185,13186,13190],{},"Within that loop, we add a ",[1596,13187,1181],{"href":13188,"rel":13189},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-by-character",[3874],". This takes a single cell containing multiple values and splits it using a delimiter, turning the values into an array.",[1570,13192,13193,13194,13198],{},"Because the split data is returned horizontally, we then use the ",[1596,13195,1185],{"href":13196,"rel":13197},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswap-rows-and-columns",[3874]," to convert it into a vertical list.",[1570,13200,13201,13202,13205],{},"Finally, we use another ",[1596,13203,1074],{"href":13179,"rel":13204},[3874]," to iterate through the transposed values one by one. This allows each option to be selected individually in the target dropdown or checkbox group.",[2227,13207],{"src":13208,"alt":13209},"\u002Fguides\u002Fnested-cell-loop.webp","steps for nested loop through cell data",[1562,13211,13213],{"id":13212},"how-to-structure-the-steps","How to structure the steps",[1570,13215,13216],{},"Below is a simplified outline of the structure:",[1729,13218,13219],{},[1577,13220,13221,13248],{},[1580,13222,13223,1738,13225,13227],{},[1681,13224,1994],{},[1740,13226,1742],{},[1577,13228,13229,13233,13237,13243],{},[1580,13230,13231,1750],{},[1740,13232,1749],{},[1580,13234,13235,9563],{},[1740,13236,1755],{},[1580,13238,13239,12859,13241,1696],{},[1740,13240,8780],{},[1740,13242,8784],{},[1580,13244,13245,13247],{},[1740,13246,6877],{},": End at a specified column and row, depending on how many rows you want to process.",[1580,13249,13250,1738,13252,13254,13264],{},[1681,13251,2542],{},[1740,13253,667],{},[1577,13255,13256],{},[1580,13257,13258,1780,13260,1784,13262,1696],{},[1740,13259,667],{},[1740,13261,1841],{},[1740,13263,1787],{},[1577,13265,13266,13291,13309],{},[1580,13267,13268,1738,13270,13273],{},[1681,13269,2551],{},[1740,13271,13272],{},"Split by character",[1577,13274,13275,13284],{},[1580,13276,13277,13280,13281,1696],{},[1740,13278,13279],{},"Character",": Enter your chosen delimiter, for example ",[1740,13282,13283],{},",",[1580,13285,13286,1780,13288,13290],{},[1740,13287,2109],{},[1740,13289,1841],{},", select the column that contains your delimited cell values (e.g., sizes column).",[1580,13292,13293,1738,13295,13298],{},[1681,13294,2569],{},[1740,13296,13297],{},"Swap rows and columns",[1577,13299,13300],{},[1580,13301,13302,1780,13304,13306,13307,2862],{},[1740,13303,2109],{},[1740,13305,1841],{},", select the output from the ",[1740,13308,13272],{},[1580,13310,13311,1738,13313,13316,13326],{},[1681,13312,2577],{},[1740,13314,13315],{},"Loop through data (nested loop)",[1577,13317,13318],{},[1580,13319,13320,1780,13322,13306,13324,2862],{},[1740,13321,667],{},[1740,13323,1841],{},[1740,13325,13297],{},[1577,13327,13328],{},[1580,13329,13330,1738,13332,13334],{},[1681,13331,12956],{},[1740,13333,5254],{},[1577,13335,13336,13341],{},[1580,13337,13338,13340],{},[1740,13339,1803],{},": Highlight the size dropdown.",[1580,13342,13343,1810,13345,13347,13348,13350],{},[1740,13344,269],{},[1740,13346,5266],{},", enable \"Use element text instead of HTML\", click \"insert data\" and select the output from the ",[1740,13349,13297],{}," step. Finally click \"Complete\".",[1570,13352,13353],{},"This allows each value in the cell (for example, each size) to be selected individually.",[1562,13355,2430],{"id":2429},[1570,13357,13358],{},"Looping through data inside loops can feel complex at first. The key is setting up your data correctly using a delimiter.",[1570,13360,13361],{},"Once your data is structured properly, you only need a few steps:",[1577,13363,13364,13370,13376],{},[1580,13365,13366],{},[1596,13367,13369],{"href":13188,"rel":13368},[3874],"Split",[1580,13371,13372],{},[1596,13373,13375],{"href":13196,"rel":13374},[3874],"Transpose",[1580,13377,13378],{},[1596,13379,13381],{"href":13179,"rel":13380},[3874],"loop",[1570,13383,13384],{},"From there, you can automate selecting multiple dropdown items, ticking multiple checkboxes, or interacting with repeated UI elements.",[1570,13386,13387],{},"Master nested loops, and you unlock the ability to automate highly dynamic interfaces.",{"title":1640,"searchDepth":1641,"depth":1641,"links":13389},[13390,13391,13392,13393,13394],{"id":13133,"depth":1644,"text":13134},{"id":13147,"depth":1644,"text":13148},{"id":13165,"depth":1644,"text":13166},{"id":13212,"depth":1644,"text":13213},{"id":2429,"depth":1644,"text":2430},{"pinned":1657,"metaTitle":13396,"type":2152,"format":1729,"intent_type":3384,"intent":2461,"tags":13397,"platfrom":13398},"How to loop through data in cells using nested loops and a data source like Google Sheets",[2688],[3387],"\u002Fguides\u002Fhow-to-loop-through-data-in-cells",{"title":13117,"description":13124},"guides\u002Fhow-to-loop-through-data-in-cells","phx8XCoib2bbjF7pVdlaqhsm61REmcK3HabzAgfUBaU",{"id":13404,"title":13405,"body":13406,"date":1651,"description":13688,"extension":1653,"meta":13689,"navigation":1657,"order":1651,"path":13693,"seo":13694,"stem":13695,"__hash__":13696},"guides\u002Fguides\u002Fhubspot-sequence-add-contacts.md","How to automate adding contacts to your Hubspot sequences",{"type":1555,"value":13407,"toc":13683},[13408,13410,13414,13438,13440,13442,13445,13478,13480,13482,13492,13667,13673,13675,13677],[1567,13409],{},[2227,13411],{"src":13412,"alt":13413},"\u002Fdocs\u002Fguides\u002Fhubspot-sequences.jpg","Automate hubspot sequences in the browser with axiom.ai",[1570,13415,13416,13417,5508,13420,1842,13423,13426,13427,13430,13431,13434,13435,13437],{},"This guide shows you how to make a bot that reads contact information from a Google Sheet, opens a HubSpot email sequence, and then ",[1596,13418,13419],{"href":525},"clicks",[1681,13421,13422],{},"\"Email Contacts\"",[1681,13424,13425],{},"\"Enroll Contacts.\""," It then enters the email into the ",[1681,13428,13429],{},"\"Search for Contacts\""," input. The bot then selects \"Next\" and finally ",[1681,13432,13433],{},"\"Start Sequence\""," before repeating the process in a ",[1596,13436,13381],{"href":668}," for the next contact. Better still, the bot can be easily adapted to your use case by adding and removing steps.",[1562,13439,12780],{"id":12779},[1567,13441],{},[1570,13443,13444],{},"Create a Google Sheet add some contact emails to the sheet. See example below.",[8690,13446,13447,13455],{},[8693,13448,13449],{},[8696,13450,13451,13453],{},[8699,13452,5163],{},[8699,13454,12794],{},[8706,13456,13457,13468],{},[8696,13458,13459,13465],{},[8711,13460,13461],{},[1596,13462,13464],{"href":13463},"mailto:dummycontact@mywork.com","dummycontact@mywork.com",[8711,13466,13467],{},"---",[8696,13469,13470,13476],{},[8711,13471,13472],{},[1596,13473,13475],{"href":13474},"mailto:dummycontact1@mywork.com","dummycontact1@mywork.com",[8711,13477,13467],{},[1562,13479,8731],{"id":8730},[1567,13481],{},[1570,13483,12823,13484,12828,13488,8740,13490,12834],{},[1596,13485,5052],{"href":13486,"rel":13487},"http:\u002F\u002Faxiom.ai\u002F",[3874],[1681,13489,8739],{},[1681,13491,12833],{},[1729,13493,13494],{},[1577,13495,13496,13526,13540],{},[1580,13497,13498,1738,13500,13502],{},[1681,13499,1994],{},[1740,13501,1742],{},[1577,13503,13504,13508,13512,13519],{},[1580,13505,13506,1750],{},[1740,13507,1749],{},[1580,13509,13510,9563],{},[1740,13511,1755],{},[1580,13513,13514,13516,13517,1696],{},[1740,13515,8780],{},": Start from ",[1740,13518,8784],{},[1580,13520,13521,13523,13524,1696],{},[1740,13522,6877],{},": End at ",[1740,13525,8792],{},[1580,13527,13528,1738,13530,13533],{},[1681,13529,2542],{},[1740,13531,13532],{},"Go to page: Hubspot Sequence",[1577,13534,13535],{},[1580,13536,13537,13539],{},[1740,13538,1779],{},": Insert the sequence URL you wish to add contacts into.",[1580,13541,13542,1738,13544,13546,13556],{},[1681,13543,10612],{},[1740,13545,667],{},[1577,13547,13548],{},[1580,13549,13550,1780,13552,1784,13554,1696],{},[1740,13551,667],{},[1740,13553,1841],{},[1740,13555,1787],{},[1577,13557,13558,13580,13596,13610,13624,13639],{},[1580,13559,13560,1738,13562,13565],{},[1681,13561,10621],{},[1740,13563,13564],{},"Select list: Enroll contacts",[1577,13566,13567,13572],{},[1580,13568,13569,13571],{},[1740,13570,1803],{},": Highlight the “Enroll contacts” dropdown.",[1580,13573,13574,13576,13577,1696],{},[1740,13575,2587],{},": Add the text ",[1740,13578,13579],{},"\"Email contacts\"",[1580,13581,13582,1738,13584,13587],{},[1681,13583,10629],{},[1740,13585,13586],{},"Enter text: Search for contact",[1577,13588,13589],{},[1580,13590,13591,1780,13593,13595],{},[1740,13592,2587],{},[1740,13594,1841],{},", select the email column from the Google Sheet (column A).",[1580,13597,13598,1738,13600,13603],{},[1681,13599,10645],{},[1740,13601,13602],{},"Click element: Tick contact",[1577,13604,13605],{},[1580,13606,13607,13609],{},[1740,13608,1803],{},": Highlight and select the checkbox for the top result.",[1580,13611,13612,1738,13614,13617],{},[1681,13613,10653],{},[1740,13615,13616],{},"Click element: Next",[1577,13618,13619],{},[1580,13620,13621,13623],{},[1740,13622,1803],{},": Highlight the “Next” button and click Complete.",[1580,13625,13626,1738,13629,13632],{},[1681,13627,13628],{},"Step 3.5",[1740,13630,13631],{},"Click element: Start sequence",[1577,13633,13634],{},[1580,13635,13636,13638],{},[1740,13637,1803],{},": Highlight the “Start sequence” button and click Complete.",[1580,13640,13641,1738,13643,13645],{},[1681,13642,10795],{},[1740,13644,1928],{},[1577,13646,13647,13651,13655,13661],{},[1580,13648,13649,1750],{},[1740,13650,1749],{},[1580,13652,13653,9563],{},[1740,13654,1755],{},[1580,13656,13657,1810,13659,1696],{},[1740,13658,13066],{},[1740,13660,1813],{},[1580,13662,13663,1810,13665,1696],{},[1740,13664,13074],{},[1740,13666,1813],{},[1570,13668,13669,13670,13672],{},"💡 Adjust the ",[1740,13671,6877],{}," value in Step 1.0 (e.g. \"AB50\") to loop through multiple contacts.",[1562,13674,2430],{"id":2429},[1567,13676],{},[1570,13678,13679,13680,1696],{},"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 ",[1596,13681,13682],{"href":8885},"browser",{"title":1640,"searchDepth":1641,"depth":1641,"links":13684},[13685,13686,13687],{"id":12779,"depth":1644,"text":12780},{"id":8730,"depth":1644,"text":8731},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":2682,"intent":2461,"tags":13690,"platfrom":13691},[2688],[13692],"Hubspot","\u002Fguides\u002Fhubspot-sequence-add-contacts",{"title":13405,"description":13688},"guides\u002Fhubspot-sequence-add-contacts","7fkmEqDGbiJAtWBKfOvxQ_u6hVopVfLhafbwt9GON9Y",{"id":13698,"title":13699,"body":13700,"date":1651,"description":14258,"extension":1653,"meta":14259,"navigation":1657,"order":1651,"path":14262,"seo":14263,"stem":14264,"__hash__":14265},"guides\u002Fguides\u002Fifttt.md","How to trigger axiom.ai automations using IFTTT",{"type":1555,"value":13701,"toc":14247},[13702,13704,13712,13722,13724,13726,13749,13753,13756,13788,13791,13824,13828,13832,13835,13862,13865,13887,13890,13937,13939,13947,13953,13955,13958,13962,13971,14001,14004,14011,14015,14018,14064,14067,14183,14194,14234,14236,14239,14244],[1567,13703],{},[1570,13705,13706,13711],{},[1596,13707,13710],{"href":13708,"rel":13709},"https:\u002F\u002Fifttt.com",[3874],"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.",[1570,13713,13714,13715,13717,13718,13721],{},"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 ",[1596,13716,1535],{"href":1534},"). Some features of ",[1596,13719,13710],{"href":13708,"rel":13720},[3874]," may require a subscription.",[1562,13723,2182],{"id":2181},[1570,13725,2187],{},[1729,13727,13728],{},[2191,13729,13730,13737,13742],{},[1580,13731,13732,13734,13735,1696],{},[1681,13733,1628],{},": Your personal API key can be found in the extension ",[1596,13736,2201],{"href":2200},[1580,13738,13739,13741],{},[1681,13740,2206],{},": The name of the automation you wish to trigger.",[1580,13743,13744,13746,13747,1696],{},[1681,13745,2212],{},": The current axiom.ai endpoint is ",[1740,13748,2216],{},[1562,13750,13752],{"id":13751},"trigger-an-axiomai-automation-with-ifttt","Trigger an axiom.ai automation with IFTTT",[1570,13754,13755],{},"Learn how to trigger an axiom.ai automation from IFTTT by making use of webhooks.",[1729,13757,13758],{},[2191,13759,13760,13771,13777,13783],{},[1580,13761,13762,13765,13766,13770],{},[1681,13763,13764],{},"Create IFTTT applet",": Head to ",[1596,13767,13769],{"href":13708,"rel":13768},[3874],"ifttt.com"," and click \"create\".",[1580,13772,13773,13776],{},[1681,13774,13775],{},"Trigger",": IFTTT offer a wide range of triggers for your automations. For this guide we will use \"Date & Time\" for simplicity.",[1580,13778,13779,13782],{},[1681,13780,13781],{},"Action(s)",": To trigger your axiom.ai automation, select \"Webhooks\" as an action.",[1580,13784,13785,13787],{},[1681,13786,2255],{},": Configure the \"webhooks\" action.",[1570,13789,13790],{},"Configure the \"webhooks\" action:",[1729,13792,13793],{},[1577,13794,13795,13801,13808,13815],{},[1580,13796,13797,2213,13799,1696],{},[1681,13798,5537],{},[1740,13800,2216],{},[1580,13802,13803,1810,13806,1696],{},[1681,13804,13805],{},"Method",[1740,13807,2262],{},[1580,13809,13810,1810,13813,1696],{},[1681,13811,13812],{},"Content Type",[1740,13814,10444],{},[1580,13816,13817,13819,13820,13823],{},[1681,13818,2267],{},": This should be set per our ",[1596,13821,13822],{"href":8319},"API | Triggering an automation"," documentation.",[2227,13825],{"src":13826,"alt":13827},"\u002Fdocs\u002Fguides\u002Fifttt-create-datetime-trigger.jpg","create ifttt with date time trigger to trigger axiom.ai automation",[1562,13829,13831],{"id":13830},"trigger-an-ifttt-applet-with-an-axiomai-automation","Trigger an IFTTT applet with an axiom.ai automation",[1570,13833,13834],{},"Learn how to trigger an IFTTT applet from an axiom.ai automation.",[1729,13836,13837],{},[2191,13838,13839,13846,13851,13856],{},[1580,13840,13841,13765,13843,13770],{},[1681,13842,13764],{},[1596,13844,13769],{"href":13708,"rel":13845},[3874],[1580,13847,13848,13850],{},[1681,13849,13775],{},": Select the \"receive a web request with a JSON payload\" trigger, and set an event name.",[1580,13852,13853,13855],{},[1681,13854,13781],{},": Select the action(s) that you would like your IFTTT flow to take.",[1580,13857,13858,13861],{},[1681,13859,13860],{},"Save",": Once saved, you will then be given a webhook URL, save this for later.",[1570,13863,13864],{},"Now head over to your axiom.ai automation:",[1729,13866,13867],{},[2191,13868,13869,13875,13881],{"start":3531},[1580,13870,13871,13874],{},[1681,13872,13873],{},"Trigger a webhook",": Add the \"trigger a webhook\" step to your automation, towards the end of your automation is often best.",[1580,13876,13877,13880],{},[1681,13878,13879],{},"Set Endpoint",": In the \"endpoint\" field, insert the URL from step 4.",[1580,13882,13883,13886],{},[1681,13884,13885],{},"Define payload",": (Optional) If you're sending data to IFTTT, define a JSON payload in the \"payload\" field.",[1570,13888,13889],{},"Example payload:",[2353,13891,13893],{"className":9321,"code":13892,"language":4212,"meta":1640,"style":1640},"{\n  \"organisation\": \"axiom.ai\",\n  \"address\": \"123 Coast Road\",\n  \"phone\": \"xxx-xxx-xxxx\"\n}\n",[1740,13894,13895,13899,13911,13923,13933],{"__ignoreMap":1640},[2361,13896,13897],{"class":2363,"line":2364},[2361,13898,9329],{"class":2402},[2361,13900,13901,13904,13906,13909],{"class":2363,"line":1644},[2361,13902,13903],{"class":9334},"  \"organisation\"",[2361,13905,3625],{"class":2402},[2361,13907,13908],{"class":2371},"\"axiom.ai\"",[2361,13910,4054],{"class":2402},[2361,13912,13913,13916,13918,13921],{"class":2363,"line":1641},[2361,13914,13915],{"class":9334},"  \"address\"",[2361,13917,3625],{"class":2402},[2361,13919,13920],{"class":2371},"\"123 Coast Road\"",[2361,13922,4054],{"class":2402},[2361,13924,13925,13928,13930],{"class":2363,"line":3525},[2361,13926,13927],{"class":9334},"  \"phone\"",[2361,13929,3625],{"class":2402},[2361,13931,13932],{"class":2371},"\"xxx-xxx-xxxx\"\n",[2361,13934,13935],{"class":2363,"line":3531},[2361,13936,4266],{"class":2402},[1562,13938,2410],{"id":2409},[1570,13940,13941,13942,13946],{},"To test the triggering of your axiom.ai automation from an IFTTT applet, simply run the flow from IFTTT and then check the ",[1681,13943,13944],{},[1596,13945,2426],{"href":2425}," 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.",[1570,13948,13949,13950,13952],{},"To test the triggering of your IFTTT applet, simply click ",[1681,13951,2418],{}," 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.",[1562,13954,8324],{"id":8323},[1570,13956,13957],{},"There are plenty of use cases that this can be applied to, below are some examples.",[1611,13959,13961],{"id":13960},"trigger-axiomai-automation-when-an-airtable-database-is-updated","Trigger axiom.ai automation when an Airtable database is updated",[1570,13963,13964,13965,13970],{},"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: ",[1596,13966,13969],{"href":13967,"rel":13968},"https:\u002F\u002Fifttt.com\u002Fairtable",[3874],"Airtable Integrations"," for more information.",[1729,13972,13973],{},[2191,13974,13975,13982,13987,13995],{},[1580,13976,13977,13765,13979,13770],{},[1681,13978,13764],{},[1596,13980,13769],{"href":13708,"rel":13981},[3874],[1580,13983,13984,13986],{},[1681,13985,13775],{},": Select the \"Airtable\" trigger.",[1580,13988,13989,13991,13992,1696],{},[1681,13990,13781],{},": Add the \"Webhooks\" action. To configure this action, see ",[1596,13993,13752],{"href":13994},"#trigger-an-axiomai-automation-with-ifttt",[1580,13996,13997,14000],{},[1681,13998,13999],{},"Test",": Add a new entry to your Airtable table, give it a moment, and then check \"run reports\" in your axiom.ai extension.",[2227,14002],{"src":14003,"alt":13827},"\u002Fdocs\u002Fguides\u002Fifttt-create-airtable-trigger.jpg",[1570,14005,14006,14007,1696],{},"Need to post data to Airtable using Axiom? Check out our guide on ",[1596,14008,14010],{"href":14009},"\u002Fguides\u002Fpost-data-to-airtable","how to post data to airtable",[1611,14012,14014],{"id":14013},"automatically-create-a-new-notion-page-with-ifttt-and-axiomai","Automatically create a new Notion page with IFTTT and axiom.ai",[1570,14016,14017],{},"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.",[1729,14019,14020],{},[2191,14021,14022,14029,14033,14038,14043,14053,14059],{},[1580,14023,14024,13765,14026,13770],{},[1681,14025,13764],{},[1596,14027,13769],{"href":13708,"rel":14028},[3874],[1580,14030,14031,13850],{},[1681,14032,13775],{},[1580,14034,14035,14037],{},[1681,14036,13781],{},": Search \"Notion\" and select \"create a page\".",[1580,14039,14040,14042],{},[1681,14041,2255],{},": 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.",[1580,14044,14045,14048,14049,14052],{},[1681,14046,14047],{},"Add a filter code",":  To make use of the ",[1740,14050,14051],{},"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.",[1580,14054,14055,14058],{},[1681,14056,14057],{},"Set up your Axiom",": Add a \"Trigger webhook\" step to your automation to use when sending data to IFTTT.",[1580,14060,14061,14063],{},[1681,14062,13999],{},": Click \"run\" on your automation with some test data then check the activity within your IFTTT applet to confirm it ran as expected.",[1570,14065,14066],{},"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.",[2353,14068,14072],{"className":14069,"code":14070,"language":14071,"meta":1640,"style":1640},"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",[1740,14073,14074,14079,14099,14103,14108,14119,14123,14128],{"__ignoreMap":1640},[2361,14075,14076],{"class":2363,"line":2364},[2361,14077,14078],{"class":4545},"\u002F\u002F Parse the payload to be able to be used within your applet.\n",[2361,14080,14081,14084,14086,14088,14091,14093,14096],{"class":2363,"line":1644},[2361,14082,14083],{"class":3616},"let",[2361,14085,11108],{"class":2402},[2361,14087,6580],{"class":3616},[2361,14089,14090],{"class":3512}," JSON",[2361,14092,1696],{"class":2402},[2361,14094,14095],{"class":4003},"parse",[2361,14097,14098],{"class":2402},"(MakerWebhooks.jsonEvent.JsonPayload)\n",[2361,14100,14101],{"class":2363,"line":1641},[2361,14102,3528],{"emptyLinePlaceholder":1657},[2361,14104,14105],{"class":2363,"line":3525},[2361,14106,14107],{"class":4545},"\u002F\u002F Set the title based on the first value within the payload\n",[2361,14109,14110,14113,14116],{"class":2363,"line":3531},[2361,14111,14112],{"class":2402},"NotionSo.createNewPage.",[2361,14114,14115],{"class":4003},"setPageTitle",[2361,14117,14118],{"class":2402},"(payload.organisation)\n",[2361,14120,14121],{"class":2363,"line":3603},[2361,14122,3528],{"emptyLinePlaceholder":1657},[2361,14124,14125],{"class":2363,"line":3682},[2361,14126,14127],{"class":4545},"\u002F\u002F Set the page content\n",[2361,14129,14130,14132,14135,14137,14140,14143,14145,14148,14151,14154,14157,14159,14161,14164,14166,14168,14171,14173,14175,14178,14180],{"class":2363,"line":3688},[2361,14131,14112],{"class":2402},[2361,14133,14134],{"class":4003},"setPageBody",[2361,14136,4169],{"class":2402},[2361,14138,14139],{"class":2371},"`Organisation: ${",[2361,14141,14142],{"class":2402},"payload",[2361,14144,1696],{"class":2371},[2361,14146,14147],{"class":2402},"organisation",[2361,14149,14150],{"class":2371},"}",[2361,14152,14153],{"class":3616},"\\n",[2361,14155,14156],{"class":2371},"Address: ${",[2361,14158,14142],{"class":2402},[2361,14160,1696],{"class":2371},[2361,14162,14163],{"class":2402},"address",[2361,14165,14150],{"class":2371},[2361,14167,14153],{"class":3616},[2361,14169,14170],{"class":2371},"Phone: ${",[2361,14172,14142],{"class":2402},[2361,14174,1696],{"class":2371},[2361,14176,14177],{"class":2402},"phone",[2361,14179,4075],{"class":2371},[2361,14181,14182],{"class":2402},")\n",[1570,14184,14185,14186,14189,14190,14193],{},"To set up your axiom.ai automation, you'll need to add a ",[1681,14187,14188],{},"trigger webhook"," step. You'll need to save your IFTTT applet and grab the webhook URL. It should have the following format: ",[1740,14191,14192],{},"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:",[2353,14195,14196],{"className":9321,"code":13892,"language":4212,"meta":1640,"style":1640},[1740,14197,14198,14202,14212,14222,14230],{"__ignoreMap":1640},[2361,14199,14200],{"class":2363,"line":2364},[2361,14201,9329],{"class":2402},[2361,14203,14204,14206,14208,14210],{"class":2363,"line":1644},[2361,14205,13903],{"class":9334},[2361,14207,3625],{"class":2402},[2361,14209,13908],{"class":2371},[2361,14211,4054],{"class":2402},[2361,14213,14214,14216,14218,14220],{"class":2363,"line":1641},[2361,14215,13915],{"class":9334},[2361,14217,3625],{"class":2402},[2361,14219,13920],{"class":2371},[2361,14221,4054],{"class":2402},[2361,14223,14224,14226,14228],{"class":2363,"line":3525},[2361,14225,13927],{"class":9334},[2361,14227,3625],{"class":2402},[2361,14229,13932],{"class":2371},[2361,14231,14232],{"class":2363,"line":3531},[2361,14233,4266],{"class":2402},[1562,14235,2430],{"id":2429},[1570,14237,14238],{},"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.",[1570,14240,14241],{},[2441,14242,14243],{},"Information correct as of October 2024. Updated to any platform mentioned my change or render this process obsolete.",[2445,14245,14246],{},"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":1640,"searchDepth":1641,"depth":1641,"links":14248},[14249,14250,14251,14252,14253,14257],{"id":2181,"depth":1644,"text":2182},{"id":13751,"depth":1644,"text":13752},{"id":13830,"depth":1644,"text":13831},{"id":2409,"depth":1644,"text":2410},{"id":8323,"depth":1644,"text":8324,"children":14254},[14255,14256],{"id":13960,"depth":1641,"text":13961},{"id":14013,"depth":1641,"text":14014},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":14260,"platfrom":14261},[2463,2464],[13710],"\u002Fguides\u002Fifttt",{"title":13699,"description":14258},"guides\u002Fifttt","1cLqZpgYwTB-1PjUZI02YloaxNdFHO1JzIImGmzYrtg",{"id":14267,"title":14268,"body":14269,"date":1651,"description":14331,"extension":1653,"meta":14332,"navigation":1657,"order":1651,"path":1970,"seo":14333,"stem":14334,"__hash__":14335},"guides\u002Fguides\u002Findex.md","Guides",{"type":1555,"value":14270,"toc":14329},[14271,14276,14279,14306,14309,14319,14325],[14272,14273],"page-header-centered-text",{"description":14274,"headline":14275},"Go beyond basics with hands-on guides for browser automation.","Browser automation guides.",[14277,14278],"blog-filters",{},[14280,14281,14282,14291,14299],"three-col",{},[2153,14283,14284],{"v-slot:ColOne":1640},[14285,14286],"docs-image-card",{"link":14287,"shape":14288,"text":14289,"title":14290},"\u002Fguides\u002Fworkflow","pyramid","Step by step guides for common automation tasks.","Workflows",[2153,14292,14293],{"v-slot:ColTwo":1640},[14285,14294],{"link":14295,"shape":14296,"text":14297,"title":14298},"\u002Fguides\u002Fpattern","cube","Techniques you can reuse across different workflows.","Patterns",[2153,14300,14301],{"v-slot:ColThree":1640},[14285,14302],{"link":14303,"shape":14296,"text":14304,"title":14305},"\u002Fguides\u002Fusecase","Real world examples of complete automations.","Use cases",[14307,14308],"guide-index-list",{},[14310,14311,14314],"grid-fade-wrap",{"bg":14312,"color":14313},"gray-to-white","default",[14315,14316],"customer-quote",{"author":14317,"quote":14318},"Nathan Heidemann","Very useful tool, saved a ton of time.",[14320,14321],"chrome-reviews",{"className":14322},[14323,14324],"gray","iso-grid-gray-100",[14326,14327],"call-to-action",{"className":14328},[14323,14324],{"title":1640,"searchDepth":1641,"depth":1641,"links":14330},[],"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":14268,"description":14331},"guides\u002Findex","HfRoBxOIausBy3YNY1npRNevRuZtFl6t2tu7XiFkL_0",{"id":14337,"title":14338,"body":14339,"date":2676,"description":14592,"extension":1653,"meta":14593,"navigation":1657,"order":1651,"path":14599,"seo":14600,"stem":14601,"__hash__":14602},"guides\u002Fguides\u002Finstagram-post.md","How to automate Instagram posts using Google Sheets",{"type":1555,"value":14340,"toc":14584},[14341,14343,14354,14356,14358,14365,14369,14377,14379,14381,14385,14528,14532,14539,14541,14545,14547,14551,14576],[1567,14342],{},[1570,14344,14345,14346,14349,14350,14353],{},"This ",[1681,14347,14348],{},"\"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 ",[1681,14351,14352],{},"\"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,14355],{},[1562,14357,2487],{"id":2486},[1570,14359,1679,14360,2718,14362,1696],{},[1681,14361,1683],{},[1681,14363,14364],{},"\"Instagram posts\"",[1562,14366,14368],{"id":14367},"install-the-instagram-post-bot","Install the Instagram post bot",[1570,14370,14371,14372,1707,14374,1711],{},"To install this Insta data entry bot, click ",[1681,14373,1706],{},[1681,14375,14376],{},"\"\"Install Chrome extension\"\"",[1570,14378,2510],{},[1570,14380,1720],{},[1562,14382,14384],{"id":14383},"configure-your-instagram-post-bot-in-four-easy-steps","Configure your Instagram post bot in four easy steps",[1729,14386,14387],{},[1577,14388,14389,14406],{},[1580,14390,14391,1738,14393,14395],{},[1681,14392,1737],{},[1740,14394,1742],{},[1577,14396,14397,14401],{},[1580,14398,14399,1750],{},[1740,14400,1749],{},[1580,14402,14403,14405],{},[1740,14404,1755],{},": Choose the tab with the posts in it.",[1580,14407,14408,1738,14410,14412,14526,2617],{},[1681,14409,1761],{},[1740,14411,667],{},[1577,14413,14414,14421,14427,14440,14447,14453,14470,14476,14483,14501,14509],{},[1580,14415,14416,1738,14418,11878],{},[1681,14417,1770],{},[1740,14419,14420],{},"Go to page: www.instagram.com",[1580,14422,14423,1738,14425,11878],{},[1681,14424,1793],{},[1740,14426,349],{},[1580,14428,14429,1738,14431,14434,14435],{},[1681,14430,1818],{},[1740,14432,14433],{},"Click element: Not Now"," ^\n",[1577,14436,14437],{},[1580,14438,14439],{},"Closes pop-up that may appear.",[1580,14441,14442,1738,14444,11878],{},[1681,14443,1860],{},[1740,14445,14446],{},"Click element: Create",[1580,14448,14449,1738,14451,11878],{},[1681,14450,1888],{},[1740,14452,11543],{},[1580,14454,14455,1738,14457,14460],{},[1681,14456,1925],{},[1740,14458,14459],{},"Upload a file: Select from computer",[1577,14461,14462],{},[1580,14463,14464,1780,14466,1784,14468,1696],{},[1740,14465,2822],{},[1740,14467,1841],{},[1740,14469,1874],{},[1580,14471,14472,1738,14474,11878],{},[1681,14473,2836],{},[1740,14475,13616],{},[1580,14477,14478,1738,14481,11878],{},[1681,14479,14480],{},"2.8",[1740,14482,13616],{},[1580,14484,14485,1738,14488,14491],{},[1681,14486,14487],{},"2.9",[1740,14489,14490],{},"Enter text: Write a caption",[1577,14492,14493],{},[1580,14494,14495,1780,14497,1784,14499,1696],{},[1740,14496,2587],{},[1740,14498,1841],{},[1740,14500,1874],{},[1580,14502,14503,1738,14506,11878],{},[1681,14504,14505],{},"2.10",[1740,14507,14508],{},"Click element: Share",[1580,14510,14511,1738,14514,14516],{},[1681,14512,14513],{},"2.11",[1740,14515,1928],{},[1577,14517,14518,14522],{},[1580,14519,14520,1750],{},[1740,14521,1749],{},[1580,14523,14524,14405],{},[1740,14525,1755],{},[1989,14527],{},[1562,14529,14531],{"id":14530},"run-your-instagram-post-bot","Run your Instagram post bot",[1570,14533,14534,14535,2858,14537,2862],{},"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 ",[1596,14536,2627],{"href":638},[1596,14538,2861],{"href":1206},[1562,14540,1964],{"id":1963},[1570,14542,1967,14543,1972],{},[1596,14544,1971],{"href":1970},[1562,14546,1398],{"id":1975},[1570,14548,2642,14549,1696],{},[1596,14550,2627],{"href":638},[1729,14552,14553],{},[1577,14554,14555,14565],{},[1580,14556,14557,14559,14561,14562,1696],{},[1681,14558,9087],{},[1989,14560],{},"\nReselect the element in ",[1740,14563,14564],{},"Steps 2.3, 2.4, 2.5, 2.6, 2.7, 2.9 – Click element",[1580,14566,14567,14570,1991,14572,14575],{},[1681,14568,14569],{},"Image does not upload?",[1989,14571],{},[1740,14573,14574],{},"Step 2.6 – Upload a file: Select from computer",", check your folder permissions and the file size.",[1570,14577,2127,14578,2930,14580],{},[1596,14579,2130],{"href":82},[1596,14581,14583],{"href":14582},"\u002Fblog\u002Fautomate-instagram-post","posting to Instagram.",{"title":1640,"searchDepth":1641,"depth":1641,"links":14585},[14586,14587,14588,14589,14590,14591],{"id":2486,"depth":1644,"text":2487},{"id":14367,"depth":1644,"text":14368},{"id":14383,"depth":1644,"text":14384},{"id":14530,"depth":1644,"text":14531},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":14594,"read":14595,"video":14596,"type":2152,"format":2153,"intent_type":13106,"intent":2683,"tags":14597,"platfrom":14598,"templateId":6273},"\u002Ftemplates\u002Finstag-logo.png","8 minutes","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F92qIT5U_LWg",[13108,2949],[13110],"\u002Fguides\u002Finstagram-post",{"title":14338,"description":14592},"guides\u002Finstagram-post","Lb9LtZb3_BXc3pC_HFUfFjXQHWqKEbKEPFKmUhjagLE",{"id":14604,"title":14605,"body":14606,"date":2676,"description":14858,"extension":1653,"meta":14859,"navigation":1657,"order":1651,"path":14864,"seo":14865,"stem":14866,"__hash__":14867},"guides\u002Fguides\u002Finstagram-scrape-post-links.md","How to scrape Instagram search for post links",{"type":1555,"value":14607,"toc":14850},[14608,14610,14617,14619,14621,14629,14633,14638,14642,14644,14648,14773,14777,14782,14784,14789,14791,14795,14846],[1567,14609],{},[1570,14611,14612,14613,14616],{},"This template automates ",[1681,14614,14615],{},"\"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,14618],{},[1562,14620,2487],{"id":2486},[1570,14622,1679,14623,2718,14625,14628],{},[1681,14624,1683],{},[1681,14626,14627],{},"\"Instagram search scraper\"",". Set up two tabs in Google Sheets: one for search terms and another for scraped data.",[1562,14630,14632],{"id":14631},"install-the-instagram-search-scraper-bot","Install the Instagram search scraper bot",[1570,14634,14635,14636,1711],{},"To install this Instagram search scraper entry bot click **\"Install template'. If you’re a new user, you’ll have to click ",[1681,14637,1710],{},[1570,14639,1714,14640,1696],{},[1681,14641,1717],{},[1570,14643,1720],{},[1562,14645,14647],{"id":14646},"configure-your-instagram-search-scraper-in-five-easy-steps","Configure your Instagram search scraper in five easy steps",[1729,14649,14650],{},[1577,14651,14652,14668],{},[1580,14653,14654,1738,14656,14658],{},[1681,14655,1737],{},[1740,14657,1742],{},[1577,14659,14660,14664],{},[1580,14661,14662,1750],{},[1740,14663,1749],{},[1580,14665,14666,14405],{},[1740,14667,1755],{},[1580,14669,14670,1738,14672,14674],{},[1681,14671,1761],{},[1740,14673,667],{},[1577,14675,14676,14698,14716,14741,14757],{},[1580,14677,14678,1738,14680,14682],{},[1681,14679,1770],{},[1740,14681,1043],{},[1577,14683,14684],{},[1580,14685,14686,1780,14688,1784,14690,14692,14693,14695],{},[1740,14687,1779],{},[1740,14689,1841],{},[1740,14691,1874],{},", and append to the end of the URL:",[1989,14694],{},[1740,14696,14697],{},"https:\u002F\u002Fwww.instagram.com\u002Fexplore\u002Fsearch\u002Fkeyword\u002F?q=",[1580,14699,14700,1738,14702,14704],{},[1681,14701,1793],{},[1740,14703,1796],{},[1577,14705,14706],{},[1580,14707,14708,14709,8585,14711,14713],{},"Preconfigured with ",[1596,14710,2025],{"href":1383},[1989,14712],{},[1740,14714,14715],{},"main a[role=\"link\"]",[1580,14717,14718,1738,14720,14722],{},[1681,14719,1818],{},[1740,14721,1863],{},[1577,14723,14724,14733],{},[1580,14725,14726,1780,14728,14730,14731],{},[1740,14727,1870],{},[1740,14729,1841],{},", select post URL in ",[1740,14732,7891],{},[1580,14734,14735,1780,14737,1784,14739],{},[1740,14736,1880],{},[1740,14738,1841],{},[1740,14740,1845],{},[1580,14742,14743,1738,14745,14747],{},[1681,14744,1860],{},[1740,14746,4924],{},[1577,14748,14749,14753],{},[1580,14750,14751,1750],{},[1740,14752,1749],{},[1580,14754,14755,14405],{},[1740,14756,1755],{},[1580,14758,14759,1738,14761,14763],{},[1681,14760,1888],{},[1740,14762,1928],{},[1577,14764,14765,14769],{},[1580,14766,14767,1750],{},[1740,14768,1749],{},[1580,14770,14771,14405],{},[1740,14772,1755],{},[1562,14774,14776],{"id":14775},"run-your-instagram-search-scraper","Run your Instagram search scraper",[1570,14778,14779,14780,1696],{},"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 ",[1596,14781,2627],{"href":638},[1562,14783,1964],{"id":1963},[1570,14785,1967,14786,1972],{},[1596,14787,1971],{"href":14788},"recipes",[1562,14790,1398],{"id":1975},[1570,14792,2642,14793,1696],{},[1596,14794,2627],{"href":638},[1729,14796,14797],{},[1577,14798,14799,14815,14832],{},[1580,14800,14801,14804,1991,14806,14809,14810,14812],{},[1681,14802,14803],{},"Page not loading?",[1989,14805],{},[1740,14807,14808],{},"Step 2.1 – Go to page",", check if the token is inserted. The URL should look like:",[1989,14811],{},[1740,14813,14814],{},"https:\u002F\u002Fwww.instagram.com\u002Fexplore\u002Fsearch\u002Fkeyword\u002F?q=[google-sheet-data]",[1580,14816,14817,14820,1991,14822,14824,14825,14827,14828,14830],{},[1681,14818,14819],{},"No data?",[1989,14821],{},[1740,14823,2013],{},", check the ",[1596,14826,2025],{"href":1383}," works:",[1989,14829],{},[1740,14831,14715],{},[1580,14833,14834,14837,1991,14839,14842,14843,14845],{},[1681,14835,14836],{},"No data being written?",[1989,14838],{},[1740,14840,14841],{},"Step 2.4 – Write data to a Google Sheet",", ensure ",[1740,14844,1911],{}," is selected under \"Data\".",[1570,14847,2127,14848],{},[1596,14849,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":14851},[14852,14853,14854,14855,14856,14857],{"id":2486,"depth":1644,"text":2487},{"id":14631,"depth":1644,"text":14632},{"id":14646,"depth":1644,"text":14647},{"id":14775,"depth":1644,"text":14776},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":14594,"read":14595,"video":14860,"templateId":6394,"type":2152,"format":2153,"intent_type":13106,"intent":5637,"tags":14861,"platfrom":14863},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FHkhXv-wUvKE",[13108,14862,2158],"posts",[13110],"\u002Fguides\u002Finstagram-scrape-post-links",{"title":14605,"description":14858},"guides\u002Finstagram-scrape-post-links","_sweMlt46VfRn-OGfgBVsxRDImdaLBUdpB11JHixe0Y",{"id":14869,"title":14870,"body":14871,"date":2676,"description":15106,"extension":1653,"meta":15107,"navigation":1657,"order":1651,"path":15113,"seo":15114,"stem":15115,"__hash__":15116},"guides\u002Fguides\u002Finstagram-scrape-users-from-hashtag.md","How to scrape Instagram hashtag pages for handles and post links",{"type":1555,"value":14872,"toc":15098},[14873,14875,14882,14884,14886,14892,14896,14903,14907,14909,14913,14997,15001,15014,15016,15020,15022,15026,15094],[1567,14874],{},[1570,14876,14877,14878,14881],{},"This template scrapes ",[1681,14879,14880],{},"\"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,14883],{},[1562,14885,2487],{"id":2486},[1570,14887,14888,14889,1696],{},"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 ",[1681,14890,14891],{},"\"Instagram hashtag data\"",[1562,14893,14895],{"id":14894},"install-the-instagram-hashtag-bot","Install the Instagram hashtag bot",[1570,14897,14898,14899,1707,14901,1711],{},"To install this Instagram handle scraper entry bot click ",[1681,14900,1706],{},[1681,14902,1710],{},[1570,14904,1714,14905,1696],{},[1681,14906,1717],{},[1570,14908,1720],{},[1562,14910,14912],{"id":14911},"configure-your-instagram-hashtag-bot-in-two-easy-steps","Configure your Instagram hashtag bot in two easy steps",[1729,14914,14915,14995],{},[1577,14916,14917,14940],{},[1580,14918,14919,1738,14921,14924],{},[1681,14920,1737],{},[1740,14922,14923],{},"Get a list of links to pages from a URL",[1577,14925,14926,14934],{},[1580,14927,14928,14930,14931],{},[1740,14929,5537],{},": Insert an Instagram hashtag URL, e.g. ",[1740,14932,14933],{},"instagram.com\u002Fexplore\u002Ftags\u002Fbeach\u002F",[1580,14935,14936,14939],{},[1740,14937,14938],{},"Max results",": Set the number of posts to scrape",[1580,14941,14942,1738,14944,14946],{},[1681,14943,1761],{},[1740,14945,667],{},[1577,14947,14948,14954,14978],{},[1580,14949,14950,1738,14952,11878],{},[1681,14951,1770],{},[1740,14953,1043],{},[1580,14955,14956,1738,14958,14960],{},[1681,14957,1793],{},[1740,14959,667],{},[1577,14961,14962,14970],{},[1580,14963,14964,1738,14967,11878],{},[1681,14965,14966],{},"2.2.1",[1740,14968,14969],{},"Current URL",[1580,14971,14972,1738,14975,11878],{},[1681,14973,14974],{},"2.2.2",[1740,14976,14977],{},"Get a list of links to pages from bot's current page",[1580,14979,14980,1738,14982,14984],{},[1681,14981,1888],{},[1740,14983,4924],{},[1577,14985,14986,14990],{},[1580,14987,14988,2758],{},[1740,14989,1749],{},[1580,14991,14992,14994],{},[1740,14993,1755],{},": Set the sheet name",[1570,14996,2617],{},[1562,14998,15000],{"id":14999},"run-your-instagram-hashtag-bot","Run your Instagram hashtag bot",[1570,15002,15003,15004,15007,15008,15011,15012,1696],{},"To test the Instagram hashtag bot in ",[1681,15005,15006],{},"\"Step 1\""," adjust the ",[1681,15009,15010],{},"\"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 ",[1596,15013,2627],{"href":638},[1562,15015,1964],{"id":1963},[1570,15017,1967,15018,1972],{},[1596,15019,1971],{"href":1970},[1562,15021,1398],{"id":1975},[1570,15023,2642,15024,1696],{},[1596,15025,2627],{"href":638},[1729,15027,15028],{},[1577,15029,15030,15041,15052,15066,15080],{},[1580,15031,15032,15035,15037,15038,1696],{},[1681,15033,15034],{},"Not loading Instagram?",[1989,15036],{},"\nMake sure you have added an Instagram hashtag URL in ",[1740,15039,15040],{},"Step 1.0 – Get a list of links to pages from a URL",[1580,15042,15043,15046,15048,15049,15051],{},[1681,15044,15045],{},"Not scraping all posts?",[1989,15047],{},"\nIn the same step, check the ",[1740,15050,14938],{}," setting.",[1580,15053,15054,15057,1991,15059,3113,15061,2110,15063,1696],{},[1681,15055,15056],{},"Not looping through scraped links?",[1989,15058],{},[1740,15060,14808],{},[1740,15062,2109],{},[1740,15064,15065],{},"[scraped-link-data]",[1580,15067,15068,15071,1991,15073,15076,15077,15079],{},[1681,15069,15070],{},"Selectors not working?",[1989,15072],{},[1740,15074,15075],{},"Step 2.2.2 – Get a list of links to pages from bot's current page",", try reselecting or use ",[1596,15078,9093],{"href":1383}," if needed.",[1580,15081,15082,15084,1991,15086,14842,15089,2110,15091,1696],{},[1681,15083,2103],{},[1989,15085],{},[1740,15087,15088],{},"Step 2.5 – Write data to a Google Sheet",[1740,15090,2109],{},[1740,15092,15093],{},"[all-interaction-data_1]",[1570,15095,2127,15096],{},[1596,15097,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":15099},[15100,15101,15102,15103,15104,15105],{"id":2486,"depth":1644,"text":2487},{"id":14894,"depth":1644,"text":14895},{"id":14911,"depth":1644,"text":14912},{"id":14999,"depth":1644,"text":15000},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":14594,"read":14595,"video":15108,"templateId":6313,"type":2152,"format":2153,"intent_type":13106,"intent":5637,"tags":15109,"platfrom":15112},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FhNeBSKoEaGo",[13108,15110,15111,2158],"users","hashtags",[13110],"\u002Fguides\u002Finstagram-scrape-users-from-hashtag",{"title":14870,"description":15106},"guides\u002Finstagram-scrape-users-from-hashtag","eRDON-ATQSu5ah1b3SZ78L5IdCy_T8ZVHm6QCsmAi0M",{"id":15118,"title":15119,"body":15120,"date":15311,"description":15126,"extension":1653,"meta":15312,"navigation":1657,"order":1651,"path":15317,"seo":15318,"stem":15319,"__hash__":15320},"guides\u002Fguides\u002Finteracting-with-button-list.md","How to loop through a list of buttons",{"type":1555,"value":15121,"toc":15302},[15122,15124,15127,15130,15134,15136,15144,15147,15151,15153,15160,15164,15174,15199,15203,15213,15236,15240,15242,15245,15267,15271,15273,15284,15291],[1567,15123],{},[1570,15125,15126],{},"Learn how to loop through buttons on the same web page using custom CSS selectors.",[1570,15128,15129],{},"This is best used if you have a list that contains buttons, such as downloading invoices from a list.",[1562,15131,15133],{"id":15132},"finding-the-right-selector","Finding the right selector",[1567,15135],{},[1570,15137,15138,15139,15143],{},"Finding the right selector is important to get started. Start by using our blog ",[1596,15140,15142],{"href":15141},"..\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.",[1570,15145,15146],{},"Once you have a selector selected, you’ll need to add them into a Google Sheet.",[1562,15148,15150],{"id":15149},"building-the-selectors","Building the selectors",[1567,15152],{},[1570,15154,15155,15156,15159],{},"For this example, we are going to use the following button selector, this is the same selector for all buttons within the list: ",[1740,15157,15158],{},"button.download",". When querying this selector this will return a list of elements that match this CSS selector.",[1611,15161,15163],{"id":15162},"method-1-nth-child","Method 1: nth-child()",[1570,15165,6680,15166,15169,15170,15173],{},[1740,15167,15168],{},"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, ",[1740,15171,15172],{},"button.download:nth-child(1)"," will select the element at position 1. Your list would look something like this:",[8690,15175,15176,15183],{},[8693,15177,15178],{},[8696,15179,15180],{},[8699,15181,15182],{},"Selector",[8706,15184,15185,15190,15194],{},[8696,15186,15187],{},[8711,15188,15189],{},"button.download:nth-child(0)",[8696,15191,15192],{},[8711,15193,15172],{},[8696,15195,15196],{},[8711,15197,15198],{},"etc...",[1611,15200,15202],{"id":15201},"method-2-unique-selectors","Method 2: unique selectors",[1570,15204,15205,15206,3634,15209,15212],{},"Some buttons will have similar but unique selectors, for example, ",[1740,15207,15208],{},"button.download-1",[1740,15210,15211],{},"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:",[8690,15214,15215,15221],{},[8693,15216,15217],{},[8696,15218,15219],{},[8699,15220,15182],{},[8706,15222,15223,15227,15232],{},[8696,15224,15225],{},[8711,15226,15208],{},[8696,15228,15229],{},[8711,15230,15231],{},"button.download-2",[8696,15233,15234],{},[8711,15235,15198],{},[1562,15237,15239],{"id":15238},"set-up-your-google-sheet-or-excel-sheet","Set up your Google Sheet or Excel Sheet",[1567,15241],{},[1570,15243,15244],{},"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:",[8690,15246,15247,15253],{},[8693,15248,15249],{},[8696,15250,15251],{},[8699,15252,15182],{},[8706,15254,15255,15259,15263],{},[8696,15256,15257],{},[8711,15258,15189],{},[8696,15260,15261],{},[8711,15262,15172],{},[8696,15264,15265],{},[8711,15266,15198],{},[1562,15268,15270],{"id":15269},"set-up-your-automation","Set up your automation",[1567,15272],{},[1570,15274,15275,15276,4912,15279,15283],{},"Insert a ",[1596,15277,1742],{"href":15278},"..\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-a-google-sheet-step",[1596,15280,15282],{"href":15281},"..\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.",[1570,15285,15286,15287,15290],{},"Next, insert a ",[1596,15288,667],{"href":15289},"..\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.",[1570,15292,15293,15294,15297,15298,13823],{},"Once you are ready to click the button, add a ",[1596,15295,5254],{"href":15296},"..\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 ",[1596,15299,15301],{"href":15300},"..\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fcustom-css-selectors","Custom selector",{"title":1640,"searchDepth":1641,"depth":1641,"links":15303},[15304,15305,15309,15310],{"id":15132,"depth":1644,"text":15133},{"id":15149,"depth":1644,"text":15150,"children":15306},[15307,15308],{"id":15162,"depth":1641,"text":15163},{"id":15201,"depth":1641,"text":15202},{"id":15238,"depth":1644,"text":15239},{"id":15269,"depth":1644,"text":15270},"2025-08-28",{"pinned":1657,"read":2679,"level":2149,"templateId":1644,"type":2152,"format":1729,"intent_type":2154,"intent":2683,"tags":15313,"platfrom":15316},[8886,15314,15315],"click","multi click",[3387],"\u002Fguides\u002Finteracting-with-button-list",{"title":15119,"description":15126},"guides\u002Finteracting-with-button-list","TTpB56u80zcEVwpSWyrYwTBAnv14ThaFSDfEFuzF4ek",{"id":15322,"title":15323,"body":15324,"date":1651,"description":15807,"extension":1653,"meta":15808,"navigation":1657,"order":1651,"path":15815,"seo":15816,"stem":15817,"__hash__":15818},"guides\u002Fguides\u002Fjira-ticket-triage.md","How to automate Jira ticket triage with AI (Updated 2026)",{"type":1555,"value":15325,"toc":15799},[15326,15328,15331,15334,15337,15344,15348,15350,15362,15365,15369,15371,15383,15386,15397,15400,15404,15406,15423,15426,15430,15432,15435,15762,15766,15770,15772,15775,15778,15792,15794,15796],[1567,15327],{},[1570,15329,15330],{},"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.",[1570,15332,15333],{},"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.",[1570,15335,15336],{},"This guide walks through a straightforward Axiom automation that reviews Jira tickets, classifies them, and performs actions depending on the category.",[1570,15338,15339,15340,15343],{},"As an example, we’ll keep the classification simple: ",[1681,15341,15342],{},"spam vs. everything else",". You can extend the same pattern to classify by any other criteria which works for your team.",[1562,15345,15347],{"id":15346},"install-axiom-in-your-chrome-browser","Install Axiom in your Chrome browser",[1567,15349],{},[1570,15351,15352,15353,15355,1696],{},"If you haven’t already installed Axiom or created an account, go to the Chrome Web Store and",[1989,15354],{},[1681,15356,15357],{},[1596,15358,15361],{"href":15359,"rel":15360},"https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Faxiom-browser-automation\u002Fcpgamigjcbffkaiciiepndmonbfdimbb?hl=en-GB",[3874],"install Axiom",[1570,15363,15364],{},"New accounts include 2 hours of free runtime, which is enough to build and test this automation a few times.",[1562,15366,15368],{"id":15367},"set-up-your-google-sheet","Set up your Google Sheet",[1567,15370],{},[1570,15372,15373,15374,15377,15378,2094,15380,1696],{},"Create a new Google Sheet and name it ",[1681,15375,15376],{},"Triage"," and add two sheets within it ",[2441,15379,15376],{},[2441,15381,15382],{},"Closed",[1570,15384,15385],{},"This sheet will be used to:",[1577,15387,15388,15391,15394],{},[1580,15389,15390],{},"temporarily store Jira ticket links",[1580,15392,15393],{},"log classification results",[1580,15395,15396],{},"keep a record of which tickets were processed",[1570,15398,15399],{},"You don’t need to add any data manually as Axiom will populate the sheet during the run.",[1562,15401,15403],{"id":15402},"open-jira-and-create-a-new-automation","Open Jira and create a new automation",[1567,15405],{},[1729,15407,15408],{},[2191,15409,15410,15413,15416],{},[1580,15411,15412],{},"Open Chrome and log in to your Jira support portal (the page that lists incoming tickets).",[1580,15414,15415],{},"Open Axiom.",[1580,15417,15418,15419,15422],{},"Click ",[1681,15420,15421],{},"+ New Automation"," to start building from scratch.",[1570,15424,15425],{},"You’ll now begin adding steps using the Step Finder.",[1562,15427,15429],{"id":15428},"lets-build-the-jira-ticket-triage-automation","Let’s build the Jira ticket triage automation",[1567,15431],{},[1570,15433,15434],{},"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.",[1729,15436,15437],{},[1577,15438,15439,15460,15473,15496,15521,15541,15567],{},[1580,15440,15441,1738,15443,15446],{},[1681,15442,1994],{},[1740,15444,15445],{},"Clear data from a Google Sheet",[1577,15447,15448,15455],{},[1580,15449,15450,15452,15453,11063],{},[1681,15451,1749],{}," — Select the ",[1740,15454,15376],{},[1580,15456,15457,15459],{},[1681,15458,12528],{}," — Clears old results to ensure each run starts fresh.",[1580,15461,15462,1738,15464,15466],{},[1681,15463,2542],{},[1740,15465,9149],{},[1577,15467,15468],{},[1580,15469,15470,15472],{},[1681,15471,12528],{}," — Creates a timestamp to log when each run occurred.",[1580,15474,15475,1738,15477,15479],{},[1681,15476,10612],{},[1740,15478,14923],{},[1577,15480,15481,15486,15491],{},[1580,15482,15483,15485],{},[1681,15484,5537],{}," — Set to your internal Jira support portal page.",[1580,15487,15488,15490],{},[1681,15489,1803],{}," — Point and click the column with ticket\u002Fwork numbers.",[1580,15492,15493,15495],{},[1681,15494,12528],{}," — Scrapes individual ticket links for triage.",[1580,15497,15498,1738,15501,15503],{},[1681,15499,15500],{},"Step 4.0",[1740,15502,4924],{},[1577,15504,15505,15511,15516],{},[1580,15506,15507,15452,15509,11063],{},[1681,15508,1749],{},[1740,15510,15376],{},[1580,15512,15513,15515],{},[1681,15514,1907],{}," — Output from step 3.0.",[1580,15517,15518,15520],{},[1681,15519,12528],{}," — Stores ticket links for staging and review.",[1580,15522,15523,1738,15526,15528],{},[1681,15524,15525],{},"Step 5.0",[1740,15527,1742],{},[1577,15529,15530,15536],{},[1580,15531,15532,15452,15534,11063],{},[1681,15533,1749],{},[1740,15535,15376],{},[1580,15537,15538,15540],{},[1681,15539,12528],{}," — Loads ticket links back into the bot to loop through.",[1580,15542,15543,1738,15546,15549],{},[1681,15544,15545],{},"Step 6.0",[1740,15547,15548],{},"Remove results that contain certain words",[1577,15550,15551,15556,15562],{},[1580,15552,15553,15555],{},[1681,15554,2109],{}," — Select the output from step 5.0.",[1580,15557,15558,15561],{},[1681,15559,15560],{},"Words to match"," — Add terms to exclude non-ticket URLs.",[1580,15563,15564,15566],{},[1681,15565,12528],{}," — Filters out irrelevant links.",[1580,15568,15569,1738,15572,15574,15587],{},[1681,15570,15571],{},"Step 7.0",[1740,15573,667],{},[1577,15575,15576,15581],{},[1580,15577,15578,15580],{},[1681,15579,2109],{}," — Select the output from step 6.0.",[1580,15582,15583,15586],{},[1681,15584,15585],{},"Loop through all"," — Enable this to process every ticket.",[1577,15588,15589,15608,15628,15659],{},[1580,15590,15591,1738,15594,15596],{},[1681,15592,15593],{},"Step 7.1",[1740,15595,1043],{},[1577,15597,15598,15603],{},[1580,15599,15600,15602],{},[1681,15601,1779],{}," — Insert ticket link from loop data.",[1580,15604,15605,15607],{},[1681,15606,12528],{}," — Opens each Jira ticket one by one.",[1580,15609,15610,1738,15613,15616],{},[1681,15611,15612],{},"Step 7.2",[1740,15614,15615],{},"Get data from bot’s current page",[1577,15617,15618,15623],{},[1580,15619,15620,15622],{},[1681,15621,1803],{}," — Point and click content like description or request.",[1580,15624,15625,15627],{},[1681,15626,12528],{}," — Extracts the content to classify.",[1580,15629,15630,1738,15633,15635],{},[1681,15631,15632],{},"Step 7.3",[1740,15634,1821],{},[1577,15636,15637,15643,15654],{},[1580,15638,15639,15642],{},[1681,15640,15641],{},"Input"," — Use scraped content from step 7.2.",[1580,15644,15645,15647,15648,4912,15651,1696],{},[1681,15646,1635],{}," — Classify as simple output like ",[1740,15649,15650],{},"SPAM",[1740,15652,15653],{},"VALID",[1580,15655,15656,15658],{},[1681,15657,12528],{}," — Generates a tag or label for each ticket.",[1580,15660,15661,1738,15664,15667,15692],{},[1681,15662,15663],{},"Step 7.4",[1740,15665,15666],{},"If condition",[1577,15668,15669,15677,15687],{},[1580,15670,15671,15673,15674],{},[1681,15672,7884],{}," — ",[1740,15675,15676],{},"chatgpt-output",[1580,15678,15679,15682,15683,15686],{},[1681,15680,15681],{},"Condition"," — When any of ",[1740,15684,15685],{},"\"SPAM\""," is present",[1580,15688,15689,15691],{},[1681,15690,12528],{}," — Filters specific tickets for further action.",[1577,15693,15694,15718,15735],{},[1580,15695,15696,1738,15699,15701],{},[1681,15697,15698],{},"Step 7.4.1",[1740,15700,12415],{},[1577,15702,15703,15708,15713],{},[1580,15704,15705,15707],{},[1681,15706,1870],{}," — Ticket URL",[1580,15709,15710,15712],{},[1681,15711,1880],{}," — Classification result, timestamp",[1580,15714,15715,15717],{},[1681,15716,12528],{}," — Combines key info for writing.",[1580,15719,15720,1738,15723,1738,15725,15728],{},[1681,15721,15722],{},"Step 7.4.2",[1740,15724,12415],{},[2441,15726,15727],{},"(optional)",[1577,15729,15730],{},[1580,15731,15732,15734],{},[1681,15733,12528],{}," — Combine extra fields or restructure output if needed.",[1580,15736,15737,1738,15740,15742],{},[1681,15738,15739],{},"Step 7.4.3",[1740,15741,4924],{},[1577,15743,15744,15750,15755],{},[1580,15745,15746,15452,15748,11063],{},[1681,15747,1749],{},[1740,15749,15382],{},[1580,15751,15752,15754],{},[1681,15753,1907],{}," — Combined output.",[1580,15756,15757,15759,15760,1696],{},[1681,15758,12528],{}," — Logs all tickets classified as ",[1740,15761,15685],{},[2227,15763],{"src":15764,"alt":15765},"\u002Fguides\u002Ftriage_bot.png","Jira triage axiom.ai bot",[1562,15767,15769],{"id":15768},"testing-the-automation","Testing the automation",[1567,15771],{},[1570,15773,15774],{},"Before running the automation at scale, it’s a good idea to test it with a small number of tickets.",[1570,15776,15777],{},"Run the automation and confirm that:",[1577,15779,15780,15783,15786,15789],{},[1580,15781,15782],{},"Tickets are opened correctly",[1580,15784,15785],{},"Content is extracted as expected",[1580,15787,15788],{},"ChatGPT returns the intended labels",[1580,15790,15791],{},"Results are written back to the sheet",[1562,15793,2430],{"id":2429},[1567,15795],{},[1570,15797,15798],{},"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":1640,"searchDepth":1641,"depth":1641,"links":15800},[15801,15802,15803,15804,15805,15806],{"id":15346,"depth":1644,"text":15347},{"id":15367,"depth":1644,"text":15368},{"id":15402,"depth":1644,"text":15403},{"id":15428,"depth":1644,"text":15429},{"id":15768,"depth":1644,"text":15769},{"id":2429,"depth":1644,"text":2430},"Learn how to automate Jira ticket triage with AI by classifying and processing support tickets automatically using a simple no code browser automation.",{"pinned":1657,"type":2152,"format":1729,"intent_type":13106,"intent":15809,"tags":15810,"platfrom":15813},"Classify or filter data",[2157,15811,15812,2158,2688,2689],"classification","tickets",[15814],"Jira","\u002Fguides\u002Fjira-ticket-triage",{"title":15323,"description":15807},"guides\u002Fjira-ticket-triage","MBeU-mNj1xNknlCgg1uggvsBFhjxc-zcFV5_v6ByUbk",{"id":15820,"title":15821,"body":15822,"date":1651,"description":15955,"extension":1653,"meta":15956,"navigation":1657,"order":1651,"path":12350,"seo":15963,"stem":15964,"__hash__":15965},"guides\u002Fguides\u002Fkeyboard-short-cuts.md","How to use keystrokes as workarounds",{"type":1555,"value":15823,"toc":15949},[15824,15826,15829,15835,15839,15843,15849,15853,15857,15937,15941,15944,15946],[1567,15825],{},[1570,15827,15828],{},"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.",[1570,15830,15831,15832,15834],{},"To utilize the power of keyboard shortcuts, you can use the ",[1681,15833,12275],{}," step to record and reuse combinations of hotkeys.",[2227,15836],{"src":15837,"alt":15838},"\u002Fdocs\u002Fguides\u002Fpress-key-guide.jpg","adding a Press key(s) step in axiom.ai builder",[1562,15840,15842],{"id":15841},"how-to-record-keyboard-shortcuts-with-the-keypress-step","How to record keyboard shortcuts with the keypress step",[1570,15844,15845,15846,15848],{},"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 ",[1681,15847,12275],{}," 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.",[2227,15850],{"src":15851,"alt":15852},"\u002Fdocs\u002Fguides\u002Fpress-keys-step.jpg","recording key presses in axiom.ai's builder",[1562,15854,15856],{"id":15855},"examples-of-keyboard-workarounds","Examples of keyboard workarounds",[8690,15858,15859,15868],{},[8693,15860,15861],{},[8696,15862,15863,15866],{},[8699,15864,15865],{},"Keyboard shortcut \u002F hotkey",[8699,15867,8324],{},[8706,15869,15870,15878,15886,15893,15900,15907,15914,15921,15929],{},[8696,15871,15872,15875],{},[8711,15873,15874],{},"Up\u002Fdown arrows",[8711,15876,15877],{},"Scroll a page or a box with scrollbars",[8696,15879,15880,15883],{},[8711,15881,15882],{},"Left\u002Fright arrows",[8711,15884,15885],{},"Move the cursor left or right in an input field",[8696,15887,15888,15890],{},[8711,15889,6970],{},[8711,15891,15892],{},"Tab to move cursor on the page",[8696,15894,15895,15897],{},[8711,15896,6970],{},[8711,15898,15899],{},"Tab between fields in a form",[8696,15901,15902,15904],{},[8711,15903,6970],{},[8711,15905,15906],{},"In pop up windows tab to select elements",[8696,15908,15909,15911],{},[8711,15910,9640],{},[8711,15912,15913],{},"Submit message in a chat interface",[8696,15915,15916,15918],{},[8711,15917,9640],{},[8711,15919,15920],{},"Press a button",[8696,15922,15923,15926],{},[8711,15924,15925],{},"CV+P",[8711,15927,15928],{},"Copy and paste just like a human",[8696,15930,15931,15934],{},[8711,15932,15933],{},"Delete",[8711,15935,15936],{},"Delete values in a text field",[1562,15938,15940],{"id":15939},"ensuring-the-cursor-is-correctly-placed","Ensuring the cursor is correctly placed",[1570,15942,15943],{},"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.",[1562,15945,2430],{"id":2429},[1570,15947,15948],{},"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":1640,"searchDepth":1641,"depth":1641,"links":15950},[15951,15952,15953,15954],{"id":15841,"depth":1644,"text":15842},{"id":15855,"depth":1644,"text":15856},{"id":15939,"depth":1644,"text":15940},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2683,"tags":15957,"platfrom":15962},[8886,15958,2368,15959,15960,15961],"keyboard","workaround","interaction","navigation",[3387],{"title":15821,"description":15955},"guides\u002Fkeyboard-short-cuts","8rNWhOiTy3YrVXsDEMADZckn91IjZ-pwaOWkHtqkKtQ",{"id":15967,"title":15968,"body":15969,"date":1651,"description":16132,"extension":1653,"meta":16133,"navigation":1657,"order":1651,"path":16136,"seo":16137,"stem":16138,"__hash__":16139},"guides\u002Fguides\u002Flangflow.md","How to automate Langflow using an axiom.ai automation",{"type":1555,"value":15970,"toc":16126},[15971,15973,15981,15983,15985,15988,15991,16012,16016,16018,16021,16024,16083,16086,16105,16107,16109,16112,16117,16119,16121,16124],[1567,15972],{},[1570,15974,15975,15980],{},[1596,15976,15979],{"href":15977,"rel":15978},"https:\u002F\u002Flangflow.org",[3874],"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.",[1562,15982,2182],{"id":2181},[1567,15984],{},[1570,15986,15987],{},"To get started, we will assume that you have an axiom.ai account, and a Langflow account.",[1570,15989,15990],{},"From axiom.ai, you'll need the following information",[1729,15992,15993],{},[2191,15994,15995,16001,16006],{},[1580,15996,15997,2197,15999,1696],{},[1681,15998,1628],{},[1596,16000,2201],{"href":2200},[1580,16002,16003,16005],{},[1681,16004,2206],{},": The name of the automation to trigger.",[1580,16007,16008,2213,16010,1696],{},[1681,16009,2212],{},[1740,16011,2216],{},[1562,16013,16015],{"id":16014},"triggering-an-axiomai-automation-using-langflow","Triggering an axiom.ai automation using Langflow",[1567,16017],{},[1570,16019,16020],{},"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.",[1570,16022,16023],{},"Within your workflow, search for and add an \"API Request\" component to your workflow. You'll need to configure it as such:",[1729,16025,16026,16050,16073],{},[1577,16027,16028,16037,16044],{},[1580,16029,16030,16033,16034,16036],{},[1681,16031,16032],{},"URLs",": This should be the ",[1681,16035,8624],{}," from above.",[1580,16038,16039,16041,16042,1696],{},[1681,16040,13805],{},": Change to ",[1740,16043,2262],{},[1580,16045,16046,16049],{},[1681,16047,16048],{},"Headers",": Click \"Edit Headers\", click the \"+\" icon and add one property, as follows:",[2353,16051,16053],{"className":9321,"code":16052,"language":4212,"meta":1640,"style":1640},"{\n    \"Content-Type\": \"application\u002Fjson\"\n}\n",[1740,16054,16055,16059,16069],{"__ignoreMap":1640},[2361,16056,16057],{"class":2363,"line":2364},[2361,16058,9329],{"class":2402},[2361,16060,16061,16064,16066],{"class":2363,"line":1644},[2361,16062,16063],{"class":9334},"    \"Content-Type\"",[2361,16065,3625],{"class":2402},[2361,16067,16068],{"class":2371},"\"application\u002Fjson\"\n",[2361,16070,16071],{"class":2363,"line":1641},[2361,16072,4266],{"class":2402},[1577,16074,16075],{},[1580,16076,16077,16080,16081,1696],{},[1681,16078,16079],{},"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 ",[1596,16082,8320],{"href":8319},[1570,16084,16085],{},"To accept this data within your axiom.ai automation, follow the steps below:",[1729,16087,16088],{},[2191,16089,16090,16097],{},[1580,16091,16092,2246,16094,16096],{},[1681,16093,1110],{},[1596,16095,1110],{"href":1111}," step to your automation.",[1580,16098,16099,16101,16102,16104],{},[1681,16100,2255],{},": The \"Test data\" field should be used to replicate the data within the ",[1740,16103,3468],{}," portion of the payload.",[1562,16106,2410],{"id":2409},[1567,16108],{},[1570,16110,16111],{},"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.",[1570,16113,16114,16115,4959],{},"If there are any errors on axiom.ai's side, follow the instructions provided or see ",[1596,16116,6498],{"href":1409},[1562,16118,2430],{"id":2429},[1567,16120],{},[1570,16122,16123],{},"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!",[2445,16125,9453],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":16127},[16128,16129,16130,16131],{"id":2181,"depth":1644,"text":2182},{"id":16014,"depth":1644,"text":16015},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":2154,"intent":2155,"tags":16134,"platfrom":16135},[2463,2464,2157],[15979],"\u002Fguides\u002Flangflow",{"title":15968,"description":16132},"guides\u002Flangflow","573ouRWJNlUZFbhEfRZVBuQFaXqev58eLhiYe4OnCso",{"id":16141,"title":16142,"body":16143,"date":1651,"description":16220,"extension":1653,"meta":16221,"navigation":1657,"order":1651,"path":16225,"seo":16226,"stem":16227,"__hash__":16228},"guides\u002Fguides\u002Fline-breaks.md","How to insert line breaks in your Insta DM's",{"type":1555,"value":16144,"toc":16216},[16145,16147,16150],[1567,16146],{},[1570,16148,16149],{},"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.",[12775,16151,16152,16156,16162,16208,16211,16213],{},[1562,16153,16155],{"id":16154},"how-to-insert-line-breaks-into-your-dms","How to insert line breaks into your DMs",[1570,16157,16158,16159,16161],{},"To insert the line breaks you need to configure the setting inside the ",[1740,16160,8028],{}," step being used to input your direct message.",[1729,16163,16164],{},[2191,16165,16166,16171,16190],{},[1580,16167,16168,16170],{},[1740,16169,293],{},": Click on the step to expand it.",[1580,16172,16173,16176,16177,15051,16179],{},[1740,16174,16175],{},"Custom line break",": At the bottom of the step, click on the ",[1740,16178,16175],{},[1577,16180,16181],{},[1580,16182,16183,16186,16187,1696],{},[1740,16184,16185],{},"Click \"Record\"",": Record a sequence of characters to use instead of Enter for line breaks. Use something like ",[1740,16188,16189],{},"Shift + Return",[1580,16191,16192,16194,16195],{},[1740,16193,2587],{},": Scroll back to the text input.",[1577,16196,16197,16202],{},[1580,16198,16199,16200,1696],{},"Make sure the text is a single paragraph with no line breaks from hitting ",[1740,16201,9640],{},[1580,16203,16204,16205,16207],{},"Place the cursor where you want your line breaks, then press the recorded key combination (e.g., ",[1740,16206,16189],{},") to insert them.",[1570,16209,16210],{},"Thats it, however I would suggest doing a short test run.",[1562,16212,2430],{"id":2429},[1570,16214,16215],{},"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":1640,"searchDepth":1641,"depth":1641,"links":16217},[16218,16219],{"id":16154,"depth":1644,"text":16155},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2683,"tags":16222,"platfrom":16224},[8886,16223,2688],"line break",[3387],"\u002Fguides\u002Fline-breaks",{"title":16142,"description":16220},"guides\u002Fline-breaks","0NziLHd2kRss2wNMuUDPXCV08o5uN-qGuPHswGjNXls",{"id":16230,"title":16231,"body":16232,"date":2676,"description":16514,"extension":1653,"meta":16515,"navigation":1657,"order":1651,"path":16522,"seo":16523,"stem":16524,"__hash__":16525},"guides\u002Fguides\u002Flinkedin-sales-navigator-message-leads.md","How to automate messaging leads in LinkedIn Sales Navigator",{"type":1555,"value":16233,"toc":16507},[16234,16236,16243,16245,16249,16252,16256,16263,16267,16269,16273,16418,16422,16425,16427,16431,16503],[1567,16235],{},[1570,16237,16238,16239,16242],{},"The template scrapes a ",[1681,16240,16241],{},"\"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,16244],{},[1562,16246,16248],{"id":16247},"get-started-set-up-your-lead-lists-on-sales-navigator","Get started: Set up your Lead lists on Sales Navigator",[1570,16250,16251],{},"Begin by creating and saving your lead list in Sales Navigator.",[1562,16253,16255],{"id":16254},"install-the-linkedin-sales-navigator-messenger-bot","Install the LinkedIn Sales Navigator Messenger bot",[1570,16257,16258,16259,16262],{},"If you're a new user, first click ",[1681,16260,16261],{},"\"Install Chrome Extension\"",", then create a free axiom.ai account to be able to edit the template.",[1570,16264,1714,16265,1696],{},[1681,16266,1717],{},[1570,16268,1720],{},[1562,16270,16272],{"id":16271},"configure-your-linkedin-sales-navigator-messenger-bot-in-four-easy-steps","Configure your LinkedIn Sales Navigator Messenger bot in four easy steps",[1729,16274,16275,16416],{},[1577,16276,16277,16295],{},[1580,16278,16279,1738,16281,16283],{},[1681,16280,1737],{},[1740,16282,14923],{},[1577,16284,16285,16290],{},[1580,16286,16287,16289],{},[1740,16288,5537],{},": Insert your \"Saved list of leads\" URL.",[1580,16291,16292,16294],{},[1740,16293,1809],{},": Controls how many leads you message.",[1580,16296,16297,1738,16299,16301],{},[1681,16298,1761],{},[1740,16300,667],{},[1577,16302,16303,16309,16321,16333,16344,16351,16379,16393,16405],{},[1580,16304,16305,1738,16307,11878],{},[1681,16306,1770],{},[1740,16308,1043],{},[1580,16310,16311,1738,16313,11878,16316],{},[1681,16312,1793],{},[1740,16314,16315],{},"Split a name into columns",[1577,16317,16318],{},[1580,16319,16320],{},"Extracts first name.",[1580,16322,16323,1738,16325,11878,16328],{},[1681,16324,1818],{},[1740,16326,16327],{},"Click Element: Message",[1577,16329,16330],{},[1580,16331,16332],{},"Clicks message button.",[1580,16334,16335,1738,16337,11878,16339],{},[1681,16336,1860],{},[1740,16338,1796],{},[1577,16340,16341],{},[1580,16342,16343],{},"Scrapes to see if \"Subject\" is present in the message form.",[1580,16345,16346,1738,16348,11878],{},[1681,16347,1888],{},[1740,16349,16350],{},"Remove HTML code",[1580,16352,16353,1738,16355,16357,16362],{},[1681,16354,1925],{},[1740,16356,15666],{},[1577,16358,16359],{},[1580,16360,16361],{},"Checks if subject is present. If true, a subject line is entered.",[1577,16363,16364],{},[1580,16365,16366,1738,16369,16372],{},[1681,16367,16368],{},"2.6.1",[1740,16370,16371],{},"Enter Text: Subject (required)",[1577,16373,16374],{},[1580,16375,16376,16378],{},[1740,16377,2587],{},": Enter a subject for your message. This field is required for messages to 2nd degree leads.",[1580,16380,16381,1738,16383,16386],{},[1681,16382,2836],{},[1740,16384,16385],{},"Enter Text: Type your message",[1577,16387,16388],{},[1580,16389,16390,16392],{},[1740,16391,2587],{},": Enter the message to be sent.",[1580,16394,16395,1738,16397,11878,16400],{},[1681,16396,14480],{},[1740,16398,16399],{},"Press Key(s)",[1577,16401,16402],{},[1580,16403,16404],{},"Presses return key to send the message.",[1580,16406,16407,1738,16409,11878,16411],{},[1681,16408,14487],{},[1740,16410,349],{},[1577,16412,16413],{},[1580,16414,16415],{},"Waits for message to send.",[1570,16417,2617],{},[1562,16419,16421],{"id":16420},"run-your-sales-navigator-messenger-bot","Run your Sales Navigator Messenger bot",[1570,16423,16424],{},"To test the Sales Navigator Messenger bot, disable 'Step 2.8: Press Key(s)' to prevent sending messages.",[1562,16426,1398],{"id":1975},[1570,16428,2642,16429,1696],{},[1596,16430,2627],{"href":638},[1729,16432,16433],{},[1577,16434,16435,16449,16459,16471,16481,16492],{},[1580,16436,16437,16440,16442,16443,16446,16447,2862],{},[1681,16438,16439],{},"Not loading the correct page?",[1989,16441],{},"\nCheck that your ",[1681,16444,16445],{},"\"Saved List of Leads\""," URL is correctly inserted in the ",[1740,16448,14923],{},[1580,16450,16451,16454,16456,16457,1696],{},[1681,16452,16453],{},"Want to change how many people you connect with?",[1989,16455],{},"\nIn the same step, adjust ",[1740,16458,14938],{},[1580,16460,16461,16464,2120,16466,16468,16469,2862],{},[1681,16462,16463],{},"Not looping through profiles?",[1989,16465],{},[1740,16467,15065],{}," is inserted and points to the correct column in the ",[1740,16470,1043],{},[1580,16472,16473,16476,16478,16479,2862],{},[1681,16474,16475],{},"Not clicking the Message button?",[1989,16477],{},"\nReselect the element in the ",[1740,16480,8051],{},[1580,16482,16483,16486,1991,16488,16491],{},[1681,16484,16485],{},"Subject line not added during run?",[1989,16487],{},[1740,16489,16490],{},"Step 2.6.1 – Enter Text: Subject",", make sure text is inserted.",[1580,16493,16494,16497,1991,16499,16502],{},[1681,16495,16496],{},"Message not added during run?",[1989,16498],{},[1740,16500,16501],{},"Step 2.7 – Enter Text: Type your message",", check that text is inserted.",[1570,16504,2127,16505],{},[1596,16506,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":16508},[16509,16510,16511,16512,16513],{"id":16247,"depth":1644,"text":16248},{"id":16254,"depth":1644,"text":16255},{"id":16271,"depth":1644,"text":16272},{"id":16420,"depth":1644,"text":16421},{"id":1975,"depth":1644,"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":16516,"logoFile":16517,"read":3158,"video":16518,"templateId":4186,"type":2152,"format":2153,"intent_type":2682,"intent":2683,"tags":16519,"platfrom":16520},"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",[13108,2687,2686],[16521],"LinkedIn","\u002Fguides\u002Flinkedin-sales-navigator-message-leads",{"title":16231,"description":16514},"guides\u002Flinkedin-sales-navigator-message-leads","uRHRaNvSnfSwOrRB4byxhzP56v_BRTIJkK4ISwCQ8T0",{"id":16527,"title":16528,"body":16529,"date":1651,"description":16813,"extension":1653,"meta":16814,"navigation":1657,"order":1651,"path":16818,"seo":16819,"stem":16820,"__hash__":16821},"guides\u002Fguides\u002Floop-through-links-and-scrape-data.md","Scrape data from a list of links",{"type":1555,"value":16530,"toc":16806},[16531,16533,16542,16548,16554,16558,16561,16590,16594,16597,16629,16635,16639,16796,16798,16800],[1567,16532],{},[1570,16534,16535,16536,16538,16539,16541],{},"Learn how to build an automation that allows you to loop through a list of links from a spreadsheet using our ",[1596,16537,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 ",[1596,16540,12918],{"href":1377},".\n::",[1570,16543,16544,16547],{},[2441,16545,16546],{},"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.",[1570,16549,16550,16551,1696],{},"To get started quickly, see our ",[1596,16552,2153],{"href":16553},"\u002Fguides\u002Fweb-scraping-looping-through-pages",[1562,16555,16557],{"id":16556},"building-the-automation","Building the automation",[1570,16559,16560],{},"There are multiple steps used within the automation:",[1729,16562,16563],{},[1577,16564,16565,16569,16573,16577,16581,16585],{},[1580,16566,16567,2862],{},[1596,16568,1742],{"href":1091},[1580,16570,16571,2862],{},[1596,16572,667],{"href":1075},[1580,16574,16575,2862],{},[1596,16576,1043],{"href":1044},[1580,16578,16579,2862],{},[1596,16580,1796],{"href":1040},[1580,16582,16583,2862],{},[1596,16584,4924],{"href":1214},[1580,16586,16587,2862],{},[1596,16588,16589],{"href":976},"Delete row from a Google Sheet",[1611,16591,16593],{"id":16592},"setup","Setup",[1570,16595,16596],{},"Prepare your Google Sheets spreadsheet. Add a single link per row.",[8690,16598,16599,16605],{},[8693,16600,16601],{},[8696,16602,16603],{},[8699,16604,8701],{},[8706,16606,16607,16615,16622],{},[8696,16608,16609],{},[8711,16610,16611],{},[1596,16612,16613],{"href":16613,"rel":16614},"https:\u002F\u002Fexample.com",[3874],[8696,16616,16617],{},[8711,16618,16619],{},[1596,16620,16613],{"href":16613,"rel":16621},[3874],[8696,16623,16624],{},[8711,16625,16626],{},[1596,16627,16613],{"href":16613,"rel":16628},[3874],[1570,16630,16631,16632,16634],{},"Create a new axiom.ai automation by opening the extension and clicking \"+ New automation\". Use the ",[1596,16633,7789],{"href":1361}," to add new steps to your automation.",[1611,16636,16638],{"id":16637},"start-from-blank","Start from blank",[1729,16640,16641],{},[1577,16642,16643,16676],{},[1580,16644,16645,1738,16647,16649],{},[1681,16646,1737],{},[1740,16648,1742],{},[1577,16650,16651,16656,16661,16668],{},[1580,16652,16653,16655],{},[1740,16654,1749],{},": Select the spreadsheet containing your list of links.",[1580,16657,16658,16660],{},[1740,16659,1755],{},": (Optional) Select the sheet within the spreadsheet.",[1580,16662,16663,16665,16666,1696],{},[1740,16664,8780],{},": (Optional) Start cell, e.g. ",[1740,16667,8784],{},[1580,16669,16670,16672,16673,1696],{},[1740,16671,6877],{},": (Optional) End cell, e.g. ",[1740,16674,16675],{},"\"A21\"",[1580,16677,16678,1738,16680,16682,16692],{},[1681,16679,1761],{},[1740,16681,667],{},[1577,16683,16684],{},[1580,16685,16686,1780,16688,1784,16690,1696],{},[1740,16687,2109],{},[1740,16689,1841],{},[1740,16691,1787],{},[1577,16693,16694,16715,16728,16766],{},[1580,16695,16696,1738,16698,16700],{},[1681,16697,1770],{},[1740,16699,1043],{},[1577,16701,16702,16712],{},[1580,16703,16704,1780,16706,16708,16709,16711],{},[1740,16705,1779],{},[1740,16707,1841],{},", select the column in ",[1740,16710,1787],{}," with the links.",[1580,16713,16714],{},"Tip: Click \"Clear all\" to ensure only one column is selected.",[1580,16716,16717,1738,16719,16721],{},[1681,16718,1793],{},[1740,16720,1796],{},[1577,16722,16723],{},[1580,16724,16725,16727],{},[1740,16726,1803],{},": Use the selector tool to select the data to scrape from the page.",[1580,16729,16730,1738,16732,16734],{},[1681,16731,1818],{},[1740,16733,4924],{},[1577,16735,16736,16741,16746,16753],{},[1580,16737,16738,16740],{},[1740,16739,1749],{},": Select the spreadsheet to write to.",[1580,16742,16743,16745],{},[1740,16744,1755],{},": (Optional) Select the sheet.",[1580,16747,16748,1908,16750,1696],{},[1740,16749,1907],{},[1740,16751,16752],{},"scraped-data",[1580,16754,16755,16758,16759,16761,16762,16765],{},[1740,16756,16757],{},"Write options",": Choose ",[1740,16760,7621],{}," to append, or ",[1740,16763,16764],{},"\"Clear data before writing\""," to overwrite.",[1580,16767,16768,1738,16770,16772,16773],{},[1681,16769,1860],{},[1740,16771,1928],{}," (optional)",[1577,16774,16775,16780,16784,16790],{},[1580,16776,16777,16779],{},[1740,16778,1749],{},": Select the spreadsheet.",[1580,16781,16782,16745],{},[1740,16783,1755],{},[1580,16785,16786,1810,16788,1696],{},[1740,16787,13066],{},[1740,16789,1813],{},[1580,16791,16792,1810,16794,1696],{},[1740,16793,13074],{},[1740,16795,1813],{},[1562,16797,2430],{"id":2429},[1567,16799],{},[1570,16801,16802,16803,16805],{},"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 ",[1596,16804,9979],{"href":9976}," guide to quickly get started.",{"title":1640,"searchDepth":1641,"depth":1641,"links":16807},[16808,16812],{"id":16556,"depth":1644,"text":16557,"children":16809},[16810,16811],{"id":16592,"depth":1641,"text":16593},{"id":16637,"depth":1641,"text":16638},{"id":2429,"depth":1644,"text":2430},"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":2152,"format":1729,"intent_type":3384,"intent":5637,"tags":16815,"platfrom":16817},[2158,16816,2689],"links",[3387],"\u002Fguides\u002Floop-through-links-and-scrape-data",{"title":16528,"description":16813},"guides\u002Floop-through-links-and-scrape-data","ZH_UpSwiGa2aHsFuSyXc8sYL56FFthH-l4_qHqELU3E",{"id":16823,"title":16824,"body":16825,"date":1651,"description":17399,"extension":1653,"meta":17400,"navigation":1657,"order":1651,"path":17403,"seo":17404,"stem":17405,"__hash__":17406},"guides\u002Fguides\u002Fmagnet.md","How to download keyword data from Magnet into a Google Sheet",{"type":1555,"value":16826,"toc":17390},[16827,16829,16832,16837,16840,16843,16849,16851,16853,16864,16888,16892,16894,16902,16910,17237,17240,17244,17248,17250,17264,17268,17272,17298,17300,17302,17310,17339,17343,17349,17351,17353,17370,17378,17380],[1567,16828],{},[1570,16830,16831],{},"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.",[2227,16833],{"src":16834,"className":16835,"alt":16836},"\u002Fdocs\u002Fguides\u002Fmagnet-screen-shot.webp",[5001],"Atuomate data entry into the Magnet search field.",[1570,16838,16839],{},"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.",[1570,16841,16842],{},"For this guide, we'll focus on Simple Search Mode, but the same principles apply to automating an Advanced Search.",[1570,16844,6783,16845,4912,16847],{},[1596,16846,5012],{"href":5011},[1596,16848,5576],{"href":5015},[1562,16850,5019],{"id":2181},[1567,16852],{},[1570,16854,6796,16855,6799,16857,16860,16861,1696],{},[1681,16856,5528],{},[1681,16858,16859],{},"search terms"," and another to store ",[1681,16862,16863],{},"extracted data",[1729,16865,16866],{},[2191,16867,16868,16874,16881],{},[1580,16869,16870,6812,16872,6816],{},[1681,16871,5029],{},[1740,16873,6815],{},[1580,16875,16876,5553,16878,16880],{},[1681,16877,5035],{},[1681,16879,16859],{}," into the first tab.",[1580,16882,16883,6831,16885,6835],{},[1681,16884,5041],{},[1681,16886,16887],{},"\"data\"",[1562,16889,16891],{"id":16890},"how-to-automate-extracting-keywords-from-magnet","How to automate extracting keywords from Magnet",[1567,16893],{},[1570,16895,5049,16896,5053,16898,5057,16900,5061],{},[1681,16897,5052],{},[1681,16899,5056],{},[1681,16901,5060],{},[1570,16903,5064,16904,16907,16908],{},[1596,16905,2153],{"href":16906,"download":1657},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_magent.json"," we created for this keyword scraper. Click to learn how to ",[1596,16909,5071],{"href":849},[1729,16911,16912],{},[2191,16913,16914,16934,16953,16975,17008,17036,17073,17095,17156,17200],{},[1580,16915,9937,16916,16919,16920],{},[1681,16917,16918],{},"'Read data from a Google Sheet'"," step and configure.",[2191,16921,16922,16928],{},[1580,16923,16924,16927],{},[1681,16925,16926],{},"Spreadsheet:"," Search for and add the Google Sheet you created.",[1580,16929,16930,16933],{},[1681,16931,16932],{},"Sheet name:"," Choose the tab containing the search terms.",[1580,16935,9937,16936,2862,16939],{},[1681,16937,16938],{},"'Loop through data'",[2191,16940,16941],{},[1580,16942,16943,2654,16946,5108,16949,16952],{},[1681,16944,16945],{},"Loop through data:",[1681,16947,16948],{},"'Insert Data'",[2441,16950,16951],{},"'google-sheet-data'",". The loop step will now iterate through the search terms in the Google Sheet.",[1580,16954,9937,16955,16958,16959,16961,16962],{},[1681,16956,16957],{},"'Go to page'"," sub-step to load the ",[1681,16960,6789],{}," landing page with the search field.",[2191,16963,16964],{},[1580,16965,16966,16969,16970,16972],{},[1681,16967,16968],{},"Enter URL:"," The URL will look something like this:",[1989,16971],{},[1740,16973,16974],{},"\"https:\u002F\u002Fmembers.helium10.com\u002Fmagnet\u002Fproducts?accountId=xxxxxxx\"",[1580,16976,16977,16978,16981,16982],{},"Add an ",[1681,16979,16980],{},"'Enter text'"," sub-step.",[2191,16983,16984,16994],{},[1580,16985,16986,2654,16989,5108,16991,16993],{},[1681,16987,16988],{},"Text:",[1681,16990,16948],{},[1681,16992,16951],{}," to pass the search terms from the sheet.",[1580,16995,16996,16999,17000,17003,17004,5169],{},[1681,16997,16998],{},"Select column:"," Choose column ",[1681,17001,17002],{},"‘A’"," in the preview.\n ",[2227,17005],{"src":17006,"alt":17007},"\u002Fdocs\u002Fguides\u002Fmagnet-enter-text.webp","axiom.ai using the enter text step to input search terms in Magnet",[1580,17009,9937,17010,17013,17014,17016],{},[1681,17011,17012],{},"'Click element'"," sub-step to click ",[1681,17015,6776],{},[2191,17017,17018],{},[1580,17019,17020,2654,17023,5263,17026,5267,17029,17032,17033],{},[1681,17021,17022],{},"Select:",[1681,17024,17025],{},"'Select'",[1681,17027,17028],{},"\"Custom\"",[1681,17030,17031],{},"\"Use element text.\""," Finally, click ",[1681,17034,17035],{},"\"Complete.\"",[1580,17037,17038,17039,17041,17042,4912,17045,17048],{},"To close the pop-up, add a ",[1681,17040,17012],{}," step to click ",[1681,17043,17044],{},"\"Run new search\"",[1681,17046,17047],{},"\"Load from history.\"",[2191,17049,17050,17064],{},[1580,17051,17052,2654,17054,5263,17056,7021,17058,4912,17061,1696],{},[1681,17053,17022],{},[1681,17055,17025],{},[1681,17057,17028],{},[1740,17059,17060],{},"\"[data-testid=\"runnewsearch\"]\"",[1740,17062,17063],{},"\"[data-testid=\"loadfromhistory\"]\"",[1580,17065,17066,17069,17070,5169],{},[1681,17067,17068],{},"Optional Click:"," Tick this option, as the pop-up does not always appear.\n ",[2227,17071],{"src":7036,"alt":17072},"axiom.ai interacting with a dialog in Magnet during bot run",[1580,17074,9937,17075,17078,17079],{},[1681,17076,17077],{},"'Wait'"," step to pause the bot and allow the data to load.",[2191,17080,17081],{},[1580,17082,17083,17086,17087,17090,17091,17094],{},[1681,17084,17085],{},"Wait time:"," Insert ",[1681,17088,17089],{},"\"7000\""," to make the bot wait ",[1681,17092,17093],{},"7 seconds."," You may need to experiment with wait time.",[1580,17096,9937,17097,17100,17101,17103,17104],{},[1681,17098,17099],{},"‘Get data from bot's current page’"," sub-step. With search results displayed on the ",[1681,17102,6789],{}," page, select the data you wish to extract.",[2191,17105,17106,17117,17126,17139,17148],{},[1580,17107,17108,2654,17110,17113,17114,1696],{},[1681,17109,17022],{},[1681,17111,17112],{},"‘Select’"," to open the ",[1681,17115,17116],{},"multi-selector tool",[1580,17118,17119,7680,17122,17125],{},[1681,17120,17121],{},"Select the first keyword",[1681,17123,17124],{},"\"Keyword Phrase\""," column, then repeat the selection for rows below to make a repeating selection.",[1580,17127,5310,17128,5314,17131,17134,17135,5169],{},[1681,17129,17130],{},"\"Shift + N\"",[1681,17132,17133],{},"CPR"," column in the first row, then repeat the selection in the second row.\n ",[2227,17136],{"src":17137,"alt":17138},"\u002Fdocs\u002Fguides\u002Fmagnet-select-data.png","axiom.ai selecting keyword data from Magnet",[1580,17140,17141,17144,17145,1696],{},[1681,17142,17143],{},"Select the 'Next' button"," for pagination using the ",[1681,17146,17147],{},"right arrow key",[1580,17149,17150,17153,17154,5370],{},[1681,17151,17152],{},"Set a maximum number of results"," you wish to scrape. I chose ",[1681,17155,5369],{},[1580,17157,9937,17158,2862,17161],{},[1681,17159,17160],{},"'Write data to a Google Sheet'",[2191,17162,17163,17171,17180,17190],{},[1580,17164,17165,17167,17168],{},[1681,17166,16926],{}," Select your ",[1681,17169,17170],{},"Google Sheet.",[1580,17172,17173,17176,17177,1696],{},[1681,17174,17175],{},"Sheet Name:"," Choose the tab where you want to write the ",[1681,17178,17179],{},"Amazon keyword data",[1580,17181,17182,2654,17185,5397,17187,1696],{},[1681,17183,17184],{},"Data:",[1681,17186,16948],{},[1681,17188,17189],{},"\"scraped-data-\"",[1580,17191,17192,17195,17196,17199],{},[1681,17193,17194],{},"Write Options:"," Select ",[1681,17197,17198],{},"'Add to Existing Data'"," to append the new data without deleting the existing data.",[1580,17201,9937,17202,17205,17206],{},[1681,17203,17204],{},"'Delete rows from a Google Sheet'"," step to remove the processed search term.",[2191,17207,17208,17214,17221,17229],{},[1580,17209,17210,17167,17212],{},[1681,17211,16926],{},[1681,17213,17170],{},[1580,17215,17216,17218,17219,1696],{},[1681,17217,17175],{}," Choose the tab containing the ",[1681,17220,5593],{},[1580,17222,17223,17226,17227,1696],{},[1681,17224,17225],{},"First Row to Delete:"," Leave this set to ",[1681,17228,1813],{},[1580,17230,17231,17234,17235,1696],{},[1681,17232,17233],{},"Last Row to Delete:"," Set to ",[1681,17236,5442],{},[1570,17238,17239],{},"The Magnet automation, when completed, should resemble the diagram below.",[2227,17241],{"src":17242,"className":17243,"alt":7248},"\u002Fdocs\u002Fguides\u002Fmagnet-axiom-design-pattern-steps.webp",[5450],[1562,17245,17247],{"id":17246},"testing-your-magnet-automation","Testing your Magnet automation",[1567,17249],{},[1570,17251,17252,17253,17256,17257,5466,17259,7263,17261,1696],{},"Once you have saved your **",[1596,17254,17255],{"href":4994},"Helium10 Magnet"," ** automation, click ",[1681,17258,5465],{},[1681,17260,5052],{},[1681,17262,17263],{},"keyword data",[2227,17265],{"src":17266,"alt":17267},"\u002Fdocs\u002Fguides\u002Fmagnet-write-data.webp","axiom.ai writing data to a Google Sheet from Magnet",[1611,17269,17270],{"id":7269},[1681,17271,7272],{},[2191,17273,17274,17286],{},[1580,17275,17276,17279,17280,17282,17283,1696],{},[1681,17277,17278],{},"Element not found:"," You may need to reselect elements. Changing ",[1681,17281,7283],{}," can sometimes affect ",[1681,17284,17285],{},"selectors",[1580,17287,17288,1738,17290,17292,17293,7296,17295,1696],{},[1681,17289,7289],{},[1681,17291,6789],{}," can sometimes be slow to load data, so you may need to adjust the ",[1681,17294,7295],{},[1681,17296,17297],{},"Step 7",[1562,17299,5502],{"id":5501},[1567,17301],{},[1570,17303,5505,17304,5508,17306,5512,17308,5515],{},[1681,17305,5052],{},[1681,17307,6789],{},[1681,17309,2153],{},[2191,17311,17312,17318,17327,17333],{},[1580,17313,17314,5525,17316,1696],{},[1681,17315,5524],{},[1681,17317,5528],{},[1580,17319,17320,5534,17322,7329,17324,17326],{},[1681,17321,5533],{},[1681,17323,5537],{},[1681,17325,6789],{}," page while logged in.",[1580,17328,17329,5544,17331,5547],{},[1681,17330,5543],{},[1681,17332,3468],{},[1580,17334,17335,5525,17337,1696],{},[1681,17336,5552],{},[1681,17338,5528],{},[1570,17340,5558,17341,5562],{},[1681,17342,5561],{},[1570,17344,5565,17345],{},[1596,17346,17348],{"href":17347,"download":1657},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_magnet.json","Magnet template.",[1562,17350,2430],{"id":2429},[1567,17352],{},[1570,17354,17355,17356,17358,17359,17361,17362,17365,17366,17369],{},"Extracting ",[1681,17357,17263],{}," from ",[1681,17360,6789],{}," is straightforward. You can simply ",[1681,17363,17364],{},"point and select"," the data you want. This template can be ",[1681,17367,17368],{},"modified"," and used as a starting point.",[1570,17371,7402,17372,5606,17374,7409],{},[1681,17373,4995],{},[1681,17375,17376],{},[1596,17377,5612],{"href":5611},[1567,17379],{},[1570,17381,17382],{},[2441,17383,5617,17384,5621,17386,4912,17388,5626],{},[1681,17385,5620],{},[1681,17387,4995],{},[1681,17389,5052],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":17391},[17392,17393,17394,17397,17398],{"id":2181,"depth":1644,"text":5019},{"id":16890,"depth":1644,"text":16891},{"id":17246,"depth":1644,"text":17247,"children":17395},[17396],{"id":7269,"depth":1641,"text":7272},{"id":5501,"depth":1644,"text":5502},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2682,"intent":5637,"tags":17401,"platfrom":17402},[2158,2689],[4995],"\u002Fguides\u002Fmagnet",{"title":16824,"description":17399},"guides\u002Fmagnet","7CmhjEBjM97K98IAwVqTsD9YUhaKtjvjHqUV0Gu86FE",{"id":17408,"title":17409,"body":17410,"date":2676,"description":17708,"extension":1653,"meta":17709,"navigation":1657,"order":1651,"path":17718,"seo":17719,"stem":17720,"__hash__":17721},"guides\u002Fguides\u002Fmonitor-web-page-and-send-message.md","How to monitor a web page and send email",{"type":1555,"value":17411,"toc":17700},[17412,17414,17417,17420,17422,17425,17432,17436,17444,17448,17451,17455,17458,17462,17674,17678,17681,17685,17688],[1567,17413],{},[1570,17415,17416],{},"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.",[1570,17418,17419],{},"The bot scrapes a list of content, such as titles or prices comparing them against a previous scrape to monitor for changes.",[1558,17421],{},[1570,17423,17424],{},"This template is simple and adaptable to different websites, from products to stock listings. A Google Sheet is required to store data for comparison.",[1570,17426,17427,17428],{},"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 ",[1596,17429,17431],{"href":17430},"\u002Fguides\u002Fscrape-links-from-a-website","template.",[1562,17433,17435],{"id":17434},"advantages-to-using-this-web-monitoring-design-pattern","Advantages to using this web monitoring design pattern",[2191,17437,17438,17441],{},[1580,17439,17440],{},"Adaptable to different types of website",[1580,17442,17443],{},"Monitoring can be scheduled at regular intervals",[1562,17445,17447],{"id":17446},"install-the-monitor-bot-template","Install the Monitor bot template",[1570,17449,17450],{},"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.",[1562,17452,17454],{"id":17453},"prepare-a-google-sheet","Prepare a Google Sheet",[1570,17456,17457],{},"A Google sheet is required with a list of data to compare against.",[1562,17459,17461],{"id":17460},"configure-the-bot","Configure the bot",[1729,17463,17464],{},[1577,17465,17466,17495,17524,17569,17613,17642],{},[1580,17467,17468,1738,17470,17472],{},[1681,17469,1737],{},[1740,17471,1796],{},[1577,17473,17474,17479,17484,17490],{},[1580,17475,17476,17478],{},[1740,17477,5537],{},": Insert the link of the page you wish to monitor.",[1580,17480,17481,17483],{},[1740,17482,1803],{},": Point and click to select the content to monitor.",[1580,17485,17486,17489],{},[1740,17487,17488],{},"Find pager"," (optional): Select the “Next” button if the page is paginated.",[1580,17491,17492,17494],{},[1740,17493,1809],{},": When testing, set to 10–20.",[1580,17496,17497,1738,17499,17501],{},[1681,17498,1761],{},[1740,17500,1742],{},[1577,17502,17503,17508,17513,17521],{},[1580,17504,17505,17507],{},[1740,17506,1749],{},": Search for the Google Sheet you created.",[1580,17509,17510,17512],{},[1740,17511,1755],{},": Choose the sheet with the comparison data.",[1580,17514,17515,17517,17518,17520],{},[1740,17516,8780],{}," \u002F ",[1740,17519,6877],{},": Leave as default.",[1580,17522,17523],{},"A preview of the data should now display.",[1580,17525,17526,1738,17528,17531],{},[1681,17527,5375],{},[1740,17529,17530],{},"Remove results that do not contain certain words",[1577,17532,17533,17541,17550,17558,17564],{},[1580,17534,17535,1780,17537,1784,17539,1696],{},[1740,17536,2109],{},[1740,17538,1841],{},[1740,17540,7583],{},[1580,17542,17543,1780,17546,1784,17548,1696],{},[1740,17544,17545],{},"Words",[1740,17547,1841],{},[1740,17549,1787],{},[1580,17551,17552,13067,17555,1696],{},[1740,17553,17554],{},"Word matching mode",[1740,17556,17557],{},"\"Any\"",[1580,17559,17560,17563],{},[1740,17561,17562],{},"Match on word boundary",": Leave unticked.",[1580,17565,17566,17520],{},[1740,17567,17568],{},"Columns (optional)",[1580,17570,17571,1738,17573,17576],{},[1681,17572,5414],{},[1740,17574,17575],{},"If condition: Continue only if new content found",[1577,17577,17578,17587,17593,17599,17603,17609],{},[1580,17579,17580,1780,17582,1784,17584,1696],{},[1740,17581,7884],{},[1740,17583,1841],{},[1740,17585,17586],{},"[matching-word-data]",[1580,17588,17589,17592],{},[1740,17590,17591],{},"Words to check",": Use default (a–z, 0–9).",[1580,17594,17595,3625,17597,1696],{},[1740,17596,17554],{},[1740,17598,17557],{},[1580,17600,17601,17563],{},[1740,17602,17562],{},[1580,17604,17605,17608],{},[1740,17606,17607],{},"Fail if condition not met",": Tick this box.",[1580,17610,17611,17563],{},[1740,17612,12948],{},[1580,17614,17615,1738,17617,17619],{},[1681,17616,6952],{},[1740,17618,4924],{},[1577,17620,17621,17625,17630,17636],{},[1580,17622,17623,17507],{},[1740,17624,1749],{},[1580,17626,17627,17629],{},[1740,17628,1755],{},": Choose the sheet with existing content.",[1580,17631,17632,1908,17634,1696],{},[1740,17633,1907],{},[1740,17635,17586],{},[1580,17637,17638,1810,17640,1696],{},[1740,17639,1916],{},[1740,17641,7621],{},[1580,17643,17644,1738,17646,17649],{},[1681,17645,6975],{},[1740,17647,17648],{},"Send email",[1577,17650,17651,17657,17663],{},[1580,17652,17653,17656],{},[1740,17654,17655],{},"Email addresses",": Enter email addresses, one per line.",[1580,17658,17659,17662],{},[1740,17660,17661],{},"Email subject",": Add your subject.",[1580,17664,17665,17668,17669,17671,17672,1696],{},[1740,17666,17667],{},"Email body",": Add your message. Use ",[1740,17670,1841],{}," to include ",[1740,17673,17586],{},[1562,17675,17677],{"id":17676},"test-run","Test run",[1570,17679,17680],{},"We always recommed doing a test run - click run then check the output from the scraper. In this case in the sheet.",[1562,17682,17684],{"id":17683},"troubleshooting-the-monitoring-axiom","Troubleshooting the monitoring Axiom",[1570,17686,17687],{},"As mentioned at the top of the page, you will need to scrape data to compare against before running this bot.",[1577,17689,17690,17697],{},[1580,17691,17692,17693,17696],{},"All results write to the Google Sheet, check the 'Write' Step is set to '",[2361,17694,17695],{},"word-matching-data","'.",[1580,17698,17699],{},"No message sent - perhaps no change has been detected.",{"title":1640,"searchDepth":1641,"depth":1641,"links":17701},[17702,17703,17704,17705,17706,17707],{"id":17434,"depth":1644,"text":17435},{"id":17446,"depth":1644,"text":17447},{"id":17453,"depth":1644,"text":17454},{"id":17460,"depth":1644,"text":17461},{"id":17676,"depth":1644,"text":17677},{"id":17683,"depth":1644,"text":17684},"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":3381,"read":17710,"level":17711,"video":17712,"templateId":6340,"type":2152,"format":1729,"intent_type":3384,"intent":17713,"tags":17714,"platfrom":17717},"16 minutes","Intermediate","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FoUk5xPV-eDQ","Monitor websites for changes",[17715,17716],"monitoring","scrpaing",[3387],"\u002Fguides\u002Fmonitor-web-page-and-send-message",{"title":17409,"description":17708},"guides\u002Fmonitor-web-page-and-send-message","QjcvKkN3dFlZjwXOMNL8Zx1PQ0qZAn-EFA5kh1cq0bE",{"id":17723,"title":17724,"body":17725,"date":2676,"description":17998,"extension":1653,"meta":17999,"navigation":1657,"order":1651,"path":18004,"seo":18005,"stem":18006,"__hash__":18007},"guides\u002Fguides\u002Fmonitoring-send-webhook.md","How to monitor a web page and trigger webhook",{"type":1555,"value":17726,"toc":17990},[17727,17729,17732,17734,17736,17738,17742,17744,17752,17754,17756,17758,17760,17765,17769,17961,17964,17972,17974,17977,17979,17981],[1567,17728],{},[1570,17730,17731],{},"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,17733],{},[1570,17735,17419],{},[1570,17737,17424],{},[1570,17739,17427,17740],{},[1596,17741,17431],{"href":17430},[1562,17743,17435],{"id":17434},[1729,17745,17746],{},[2191,17747,17748,17750],{},[1580,17749,17440],{},[1580,17751,17443],{},[1562,17753,17447],{"id":17446},[1570,17755,17450],{},[1562,17757,17454],{"id":17453},[1570,17759,17457],{},[1570,17761,17762,17763],{},"We suggest you adpat this ",[1596,17764,17431],{"href":17430},[1562,17766,17768],{"id":17767},"get-started-open-the-bot-for-editing","Get started open the bot for editing",[1729,17770,17771],{},[1577,17772,17773,17799,17828,17869,17912,17942],{},[1580,17774,17775,1738,17777,17779],{},[1681,17776,1737],{},[1740,17778,1796],{},[1577,17780,17781,17785,17789,17794],{},[1580,17782,17783,17478],{},[1740,17784,5537],{},[1580,17786,17787,17483],{},[1740,17788,1803],{},[1580,17790,17791,17793],{},[1740,17792,17488],{}," (optional): Select the “Next” button if the page has pagination. If the page scrolls, leave this blank.",[1580,17795,17796,17798],{},[1740,17797,1809],{},": For testing, set to 10–20.",[1580,17800,17801,1738,17803,17805],{},[1681,17802,1761],{},[1740,17804,1742],{},[1577,17806,17807,17812,17817,17821,17825],{},[1580,17808,17809,17811],{},[1740,17810,1749],{},": Search for and select the Google Sheet you created.",[1580,17813,17814,17816],{},[1740,17815,1755],{},": Choose the sheet containing the comparison data.",[1580,17818,17819,17520],{},[1740,17820,8780],{},[1580,17822,17823,17520],{},[1740,17824,6877],{},[1580,17826,17827],{},"A preview of the data should now appear.",[1580,17829,17830,1738,17832,17835],{},[1681,17831,5375],{},[1740,17833,17834],{},"Remove results which do not contain certain words",[1577,17836,17837,17845,17854,17860,17864],{},[1580,17838,17839,1780,17841,1784,17843,1696],{},[1740,17840,2109],{},[1740,17842,1841],{},[1740,17844,7583],{},[1580,17846,17847,1780,17850,1784,17852,1696],{},[1740,17848,17849],{},"Words (comma separated)",[1740,17851,1841],{},[1740,17853,1787],{},[1580,17855,17856,1810,17858,1696],{},[1740,17857,17554],{},[1740,17859,17557],{},[1580,17861,17862,17563],{},[1740,17863,17562],{},[1580,17865,17866,17868],{},[1740,17867,17568],{},": Leave default.",[1580,17870,17871,1738,17873,17876],{},[1681,17872,5414],{},[1740,17874,17875],{},"If condition: Continue only if new content is found",[1577,17877,17878,17886,17894,17900,17904,17908],{},[1580,17879,17880,1780,17882,1784,17884,1696],{},[1740,17881,7884],{},[1740,17883,1841],{},[1740,17885,17586],{},[1580,17887,17888,17890,17891,1696],{},[1740,17889,17591],{},": Leave as ",[1740,17892,17893],{},"(a,b,c,...,z,0–9)",[1580,17895,17896,3625,17898,1696],{},[1740,17897,17554],{},[1740,17899,17557],{},[1580,17901,17902,17563],{},[1740,17903,17562],{},[1580,17905,17906,17608],{},[1740,17907,17607],{},[1580,17909,17910,17563],{},[1740,17911,12948],{},[1580,17913,17914,1738,17916,17918],{},[1681,17915,6952],{},[1740,17917,4924],{},[1577,17919,17920,17924,17929,17936],{},[1580,17921,17922,17811],{},[1740,17923,1749],{},[1580,17925,17926,17928],{},[1740,17927,1755],{},": Choose the sheet you’re appending to.",[1580,17930,17931,1908,17933,1696],{},[1740,17932,1907],{},[1740,17934,17935],{},"[word-matching-data]",[1580,17937,17938,1810,17940,1696],{},[1740,17939,16757],{},[1740,17941,7621],{},[1580,17943,17944,1738,17946,17948],{},[1681,17945,6975],{},[1740,17947,13873],{},[1577,17949,17950,17955],{},[1580,17951,17952,17954],{},[1740,17953,2212],{},": Insert the webhook endpoint.",[1580,17956,17957,17960],{},[1740,17958,17959],{},"Payload",": Enter your payload in JSON format.",[1570,17962,17963],{},"Webhook trigger example:",[2353,17965,17970],{"className":17966,"code":17968,"language":17969},[17967],"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",[1740,17971,17968],{"__ignoreMap":1640},[1562,17973,17677],{"id":17676},[1570,17975,17976],{},"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.",[1562,17978,17684],{"id":17683},[1570,17980,17687],{},[1577,17982,17983,17987],{},[1580,17984,17692,17985,17696],{},[2361,17986,17695],{},[1580,17988,17989],{},"No message sent - Check your JSON",{"title":1640,"searchDepth":1641,"depth":1641,"links":17991},[17992,17993,17994,17995,17996,17997],{"id":17434,"depth":1644,"text":17435},{"id":17446,"depth":1644,"text":17447},{"id":17453,"depth":1644,"text":17454},{"id":17767,"depth":1644,"text":17768},{"id":17676,"depth":1644,"text":17677},{"id":17683,"depth":1644,"text":17684},"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":1657,"read":18000,"type":2152,"format":1729,"intent_type":3384,"intent":17713,"tags":18001,"platfrom":18002,"video":18003,"templateId":6335},"15 minutes",[17715],[3387],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FFUj68AKN5Cs","\u002Fguides\u002Fmonitoring-send-webhook",{"title":17724,"description":17998},"guides\u002Fmonitoring-send-webhook","3vrBE-Bwnp66uZlxpfHtm67D3tNnkmNqxTFl0YedlfA",{"id":18009,"title":18010,"body":18011,"date":1651,"description":18021,"extension":1653,"meta":18022,"navigation":1657,"order":1651,"path":14295,"seo":18024,"stem":18025,"__hash__":18026},"guides\u002Fguides\u002Fpattern.md","Pattern guides",{"type":1555,"value":18012,"toc":18019},[18013,18016],[1570,18014,18015],{},"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.",[18017,18018],"guides-intent-hub",{"intent":2154},{"title":1640,"searchDepth":1641,"depth":1641,"links":18020},[],"Reusable techniques for the No-code tool—logins, dialogs, forms, keyboard shortcuts, APIs, and moving data between steps.",{"layout":18023},"guides-intent",{"title":18010,"description":18021},"guides\u002Fpattern","Pu2EeFHS8UD2Lmjfg34vNMZ2WPGp7Pke7bLFNBOS-Z8",{"id":18028,"title":18029,"body":18030,"date":1651,"description":19731,"extension":1653,"meta":19732,"navigation":1657,"order":1651,"path":14009,"seo":19738,"stem":19739,"__hash__":19740},"guides\u002Fguides\u002Fpost-data-to-airtable.md","How to post data to Airtable using an axiom.ai automation",{"type":1555,"value":18031,"toc":19720},[18032,18034,18037,18039,18042,18044,18046,18066,18069,18099,18102,18153,18157,18161,18163,18166,18170,18172,18181,18185,18187,18201,18238,18648,18652,18654,18664,18691,19115,19119,19121,19124,19149,19696,19698,19701,19712,19714,19717],[1567,18033],{},[1570,18035,18036],{},"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,18038],{},[1570,18040,18041],{},"This guide assumes you are familiar with both axiom.ai and Airtable and have a basic understanding of JavaScript.",[1562,18043,2182],{"id":2181},[1570,18045,2187],{},[1729,18047,18048],{},[2191,18049,18050,18056,18060],{},[1580,18051,18052,2197,18054,1696],{},[1681,18053,1628],{},[1596,18055,2201],{"href":2200},[1580,18057,18058,2207],{},[1681,18059,2206],{},[1580,18061,18062,3427,18064,1696],{},[1681,18063,2212],{},[1740,18065,2216],{},[1570,18067,18068],{},"You'll also need information from Airtable:",[1729,18070,18071],{},[2191,18072,18073,18093],{},[1580,18074,18075,18078,18079,18084,18085,18088,18089,18092],{},[1681,18076,18077],{},"Base ID",": Head to the ",[1596,18080,18083],{"href":18081,"rel":18082},"https:\u002F\u002Fairtable.com\u002Fdeveloper-hub\u002Fweb\u002Fapi\u002F",[3874],"Airtable API page"," to grab your ",[1681,18086,18087],{},"\"Base ID\"",". Your ID will look something like ",[1681,18090,18091],{},"\"appFrf1jmiyIq5nuJ\"",". You can also find this in the URL of your base.",[1580,18094,18095,18098],{},[1681,18096,18097],{},"Table name",": Open your Airtable base, the tab names will be the table name that you need to use.",[1570,18100,18101],{},"Create a personal access token via the Airtable Developer Hub.",[1729,18103,18104],{},[2191,18105,18106,18118,18127,18132,18141,18147],{},[1580,18107,18108,18111,18112,18117],{},[1681,18109,18110],{},"Personal access token",": Open the ",[1596,18113,18116],{"href":18114,"rel":18115},"https:\u002F\u002Fairtable.com\u002Fcreate\u002Ftokens",[3874],"personal access token"," page.",[1580,18119,18120,18123,18124],{},[1681,18121,18122],{},"Create new token",": Click on the button ",[1681,18125,18126],{},"\"create a new token.\"",[1580,18128,18129,18131],{},[1681,18130,4289],{},": Name your new token.",[1580,18133,18134,18137,18138,1696],{},[1681,18135,18136],{},"Scopes",": Set the scope to ",[1681,18139,18140],{},"\"data.records:write\"",[1580,18142,18143,18146],{},[1681,18144,18145],{},"Access",": Select the Base you wish to add records to.",[1580,18148,18149,18152],{},[1681,18150,18151],{},"Create token",": Create the token, copy it for later.",[2227,18154],{"src":18155,"alt":18156},"\u002Fdocs\u002Fguides\u002Fpersonnel-access-token-airtable.jpg","Airtable create access token",[1562,18158,18160],{"id":18159},"sending-data-to-airtable-using-an-axiomai-automation","Sending data to Airtable using an axiom.ai automation",[1567,18162],{},[1570,18164,18165],{},"Learn how to get started with sending data from your axiom.ai automation to Airtable.",[1611,18167,18169],{"id":18168},"set-up-your-axiomai-automation","Set up your axiom.ai automation",[1567,18171],{},[1570,18173,18174,18175,18180],{},"Create your automation as per usual. When you need to send data to Airtable, add a ",[1681,18176,18177],{},[1596,18178,18179],{"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.",[1611,18182,18184],{"id":18183},"create-a-single-record","Create a single record",[1567,18186],{},[1570,18188,18189,18190,18192,18193,18196,18197,18200],{},"The following code will create a single record in Airtable. You'll need your credentials from the ",[1596,18191,5019],{"href":8214}," section to begin. You'll need to modify the attributes in the ",[1740,18194,18195],{},"recordData"," array with this data. When scraping, ensure that the ",[1681,18198,18199],{},"max results"," option is set to 1.",[1729,18202,18203],{},[2191,18204,18205,18220,18229],{},[1580,18206,18207,1871,18210,3634,18213,18216,18217,18219],{},[1681,18208,18209],{},"Add credentials",[1681,18211,18212],{},"base ID",[1681,18214,18215],{},"table name",", and ",[1681,18218,18116],{}," into the script.",[1580,18221,18222,18225,18226,18228],{},[1681,18223,18224],{},"Field names",": Edit the field names in ",[1740,18227,18195],{}," to match your table.",[1580,18230,18231,18234,18235],{},[1681,18232,18233],{},"Field values",": Insert axiom.ai data tokens for the value of each field, replacing the examples. ",[2441,18236,18237],{},"Tip: use the 'insert data' button to do this step.",[2353,18239,18241],{"className":2390,"code":18240,"language":2392,"meta":1640,"style":1640},"\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",[1740,18242,18243,18248,18265,18282,18299,18323,18327,18332,18343,18348,18364,18379,18394,18407,18411,18416,18420,18425,18442,18448,18464,18473,18478,18495,18505,18510,18524,18529,18533,18541,18559,18574,18583,18597,18601,18609,18623,18627,18631,18635,18640],{"__ignoreMap":1640},[2361,18244,18245],{"class":2363,"line":2364},[2361,18246,18247],{"class":4545},"\u002F\u002F Airtable API endpoint URL\n",[2361,18249,18250,18252,18255,18257,18260,18262],{"class":2363,"line":1644},[2361,18251,3942],{"class":3616},[2361,18253,18254],{"class":3512}," AirtableBaseId",[2361,18256,3948],{"class":3616},[2361,18258,18259],{"class":2371}," '*******'",[2361,18261,11025],{"class":2402},[2361,18263,18264],{"class":4545},"\u002F\u002F Add Base ID \n",[2361,18266,18267,18269,18272,18274,18277,18279],{"class":2363,"line":1641},[2361,18268,3942],{"class":3616},[2361,18270,18271],{"class":3512}," AirtableTableName",[2361,18273,3948],{"class":3616},[2361,18275,18276],{"class":2371}," '************'",[2361,18278,11025],{"class":2402},[2361,18280,18281],{"class":4545},"\u002F\u002F Add table name\n",[2361,18283,18284,18286,18289,18291,18294,18296],{"class":2363,"line":3525},[2361,18285,3942],{"class":3616},[2361,18287,18288],{"class":3512}," AirtableAccessToken",[2361,18290,3948],{"class":3616},[2361,18292,18293],{"class":2371}," '**********'",[2361,18295,11025],{"class":2402},[2361,18297,18298],{"class":4545},"\u002F\u002F Add personal access token\n",[2361,18300,18301,18303,18306,18308,18311,18314,18316,18319,18321],{"class":2363,"line":3531},[2361,18302,3942],{"class":3616},[2361,18304,18305],{"class":3512}," AirtableUrl",[2361,18307,3948],{"class":3616},[2361,18309,18310],{"class":2371}," `https:\u002F\u002Fapi.Airtable.com\u002Fv0\u002F${",[2361,18312,18313],{"class":2402},"AirtableBaseId",[2361,18315,4389],{"class":2371},[2361,18317,18318],{"class":2402},"AirtableTableName",[2361,18320,4075],{"class":2371},[2361,18322,3954],{"class":2402},[2361,18324,18325],{"class":2363,"line":3603},[2361,18326,3528],{"emptyLinePlaceholder":1657},[2361,18328,18329],{"class":2363,"line":3682},[2361,18330,18331],{"class":4545},"\u002F\u002F Data you want to send (adjust according to your Airtable fields)\n",[2361,18333,18334,18336,18339,18341],{"class":2363,"line":3688},[2361,18335,3942],{"class":3616},[2361,18337,18338],{"class":3512}," recordData",[2361,18340,3948],{"class":3616},[2361,18342,4018],{"class":2402},[2361,18344,18345],{"class":2363,"line":3694},[2361,18346,18347],{"class":2402},"  fields: {\n",[2361,18349,18350,18353,18355,18358,18361],{"class":2363,"line":3717},[2361,18351,18352],{"class":2371},"    \"Customer Name\"",[2361,18354,3625],{"class":2402},[2361,18356,18357],{"class":2371},"'[scrape-data?all&0]'",[2361,18359,18360],{"class":2402},",  ",[2361,18362,18363],{"class":4545},"\u002F\u002F Replace field and token \n",[2361,18365,18366,18369,18371,18374,18376],{"class":2363,"line":3770},[2361,18367,18368],{"class":2371},"    \"Email Address\"",[2361,18370,3625],{"class":2402},[2361,18372,18373],{"class":2371},"'[scrape-data?all&1]'",[2361,18375,18360],{"class":2402},[2361,18377,18378],{"class":4545},"\u002F\u002F Replace field and token\n",[2361,18380,18381,18384,18386,18389,18392],{"class":2363,"line":3784},[2361,18382,18383],{"class":2371},"    \"Phone Number\"",[2361,18385,3625],{"class":2402},[2361,18387,18388],{"class":2371},"'[scrape-data?all&2]'",[2361,18390,18391],{"class":2402},",   ",[2361,18393,18378],{"class":4545},[2361,18395,18396,18399,18401,18404],{"class":2363,"line":3160},[2361,18397,18398],{"class":2371},"    \"Customer ID\"",[2361,18400,3625],{"class":2402},[2361,18402,18403],{"class":2371},"'[scrape-data?all&3]'",[2361,18405,18406],{"class":4545},"     \u002F\u002F Replace field and token\n",[2361,18408,18409],{"class":2363,"line":3808},[2361,18410,11293],{"class":2402},[2361,18412,18413],{"class":2363,"line":3817},[2361,18414,18415],{"class":2402},"};\n",[2361,18417,18418],{"class":2363,"line":4160},[2361,18419,3528],{"emptyLinePlaceholder":1657},[2361,18421,18422],{"class":2363,"line":4178},[2361,18423,18424],{"class":4545},"\u002F\u002F Send data to create a single record in Airtable.\n",[2361,18426,18427,18429,18432,18435,18437,18439],{"class":2363,"line":4186},[2361,18428,11732],{"class":3616},[2361,18430,18431],{"class":3616}," function",[2361,18433,18434],{"class":4003}," sendToAirtable",[2361,18436,4169],{"class":2402},[2361,18438,3468],{"class":2367},[2361,18440,18441],{"class":2402},") {\n",[2361,18443,18444,18446],{"class":2363,"line":4192},[2361,18445,11222],{"class":3616},[2361,18447,4018],{"class":2402},[2361,18449,18450,18453,18455,18457,18459,18461],{"class":2363,"line":4197},[2361,18451,18452],{"class":3616},"    const",[2361,18454,3723],{"class":3512},[2361,18456,3948],{"class":3616},[2361,18458,4037],{"class":3616},[2361,18460,4040],{"class":4003},[2361,18462,18463],{"class":2402},"(AirtableUrl, {\n",[2361,18465,18466,18469,18471],{"class":2363,"line":4218},[2361,18467,18468],{"class":2402},"      method: ",[2361,18470,4051],{"class":2371},[2361,18472,4054],{"class":2402},[2361,18474,18475],{"class":2363,"line":4230},[2361,18476,18477],{"class":2402},"      headers: {\n",[2361,18479,18480,18483,18485,18488,18491,18493],{"class":2363,"line":4242},[2361,18481,18482],{"class":2371},"        'Authorization'",[2361,18484,3625],{"class":2402},[2361,18486,18487],{"class":2371},"`Bearer ${",[2361,18489,18490],{"class":2402},"AirtableAccessToken",[2361,18492,4075],{"class":2371},[2361,18494,4054],{"class":2402},[2361,18496,18497,18500,18502],{"class":2363,"line":4257},[2361,18498,18499],{"class":2371},"        'Content-Type'",[2361,18501,3625],{"class":2402},[2361,18503,18504],{"class":2371},"'application\u002Fjson'\n",[2361,18506,18507],{"class":2363,"line":4263},[2361,18508,18509],{"class":2402},"      },\n",[2361,18511,18512,18515,18517,18519,18521],{"class":2363,"line":4269},[2361,18513,18514],{"class":2402},"      body: ",[2361,18516,11201],{"class":3512},[2361,18518,1696],{"class":2402},[2361,18520,11206],{"class":4003},[2361,18522,18523],{"class":2402},"(data)\n",[2361,18525,18526],{"class":2363,"line":4274},[2361,18527,18528],{"class":2402},"    });\n",[2361,18530,18531],{"class":2363,"line":6268},[2361,18532,3528],{"emptyLinePlaceholder":1657},[2361,18534,18535,18538],{"class":2363,"line":6273},[2361,18536,18537],{"class":3616},"    if",[2361,18539,18540],{"class":2402}," (response.ok) {\n",[2361,18542,18543,18546,18549,18551,18553,18555,18557],{"class":2363,"line":2947},[2361,18544,18545],{"class":3616},"      const",[2361,18547,18548],{"class":3512}," jsonResponse",[2361,18550,3948],{"class":3616},[2361,18552,4037],{"class":3616},[2361,18554,4209],{"class":2402},[2361,18556,4212],{"class":4003},[2361,18558,4215],{"class":2402},[2361,18560,18561,18564,18566,18568,18571],{"class":2363,"line":6282},[2361,18562,18563],{"class":2402},"      console.",[2361,18565,4224],{"class":4003},[2361,18567,4169],{"class":2402},[2361,18569,18570],{"class":2371},"'Record added successfully:'",[2361,18572,18573],{"class":2402},", jsonResponse);\n",[2361,18575,18576,18578,18581],{"class":2363,"line":6287},[2361,18577,4233],{"class":2402},[2361,18579,18580],{"class":3616},"else",[2361,18582,4018],{"class":2402},[2361,18584,18585,18587,18589,18591,18594],{"class":2363,"line":6292},[2361,18586,18563],{"class":2402},[2361,18588,4166],{"class":4003},[2361,18590,4169],{"class":2402},[2361,18592,18593],{"class":2371},"'Error adding record:'",[2361,18595,18596],{"class":2402},", response.statusText);\n",[2361,18598,18599],{"class":2363,"line":6297},[2361,18600,4260],{"class":2402},[2361,18602,18603,18605,18607],{"class":2363,"line":6302},[2361,18604,11263],{"class":2402},[2361,18606,4236],{"class":3616},[2361,18608,4239],{"class":2402},[2361,18610,18611,18614,18616,18618,18621],{"class":2363,"line":6307},[2361,18612,18613],{"class":2402},"    console.",[2361,18615,4166],{"class":4003},[2361,18617,4169],{"class":2402},[2361,18619,18620],{"class":2371},"'Error with request:'",[2361,18622,4254],{"class":2402},[2361,18624,18625],{"class":2363,"line":6313},[2361,18626,11293],{"class":2402},[2361,18628,18629],{"class":2363,"line":6319},[2361,18630,4266],{"class":2402},[2361,18632,18633],{"class":2363,"line":6325},[2361,18634,3528],{"emptyLinePlaceholder":1657},[2361,18636,18637],{"class":2363,"line":6330},[2361,18638,18639],{"class":4545},"\u002F\u002F Call the function to send the record to Airtable\n",[2361,18641,18642,18645],{"class":2363,"line":6335},[2361,18643,18644],{"class":4003},"sendToAirtable",[2361,18646,18647],{"class":2402},"(recordData);\n",[1611,18649,18651],{"id":18650},"create-multiple-records-up-to-10","Create multiple records (up to 10)",[1567,18653],{},[1570,18655,18656,18657,18192,18659,18196,18661,18663],{},"The following code will create multiple records in Airtable. You'll need your credentials from the ",[1596,18658,5019],{"href":8214},[1740,18660,18195],{},[1681,18662,18199],{}," option is set to 10. Airtable's API limits records created per call to 10.",[1729,18665,18666],{},[2191,18667,18668,18678,18686],{},[1580,18669,18670,1871,18672,3634,18674,18216,18676,18219],{},[1681,18671,18209],{},[1681,18673,18212],{},[1681,18675,18215],{},[1681,18677,18116],{},[1580,18679,18680,18683,18684],{},[1681,18681,18682],{},"axiomData",": Remove example token and insert your own. ",[2441,18685,18237],{},[1580,18687,18688,18690],{},[1681,18689,18224],{},": Edit the field names in \"recordsToSend\", to match your table.",[2353,18692,18694],{"className":2390,"code":18693,"language":2392,"meta":1640,"style":1640},"\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",[1740,18695,18696,18700,18715,18729,18743,18763,18767,18772,18790,18794,18798,18822,18829,18834,18848,18859,18870,18883,18887,18891,18896,18900,18905,18920,18926,18940,18948,18952,18966,18974,18978,18990,18998,19003,19007,19011,19017,19033,19046,19054,19067,19071,19079,19091,19095,19099,19103,19108],{"__ignoreMap":1640},[2361,18697,18698],{"class":2363,"line":2364},[2361,18699,18247],{"class":4545},[2361,18701,18702,18704,18706,18708,18710,18712],{"class":2363,"line":1644},[2361,18703,3942],{"class":3616},[2361,18705,18254],{"class":3512},[2361,18707,3948],{"class":3616},[2361,18709,18259],{"class":2371},[2361,18711,11025],{"class":2402},[2361,18713,18714],{"class":4545},"\u002F\u002F Add base ID\n",[2361,18716,18717,18719,18721,18723,18725,18727],{"class":2363,"line":1641},[2361,18718,3942],{"class":3616},[2361,18720,18271],{"class":3512},[2361,18722,3948],{"class":3616},[2361,18724,18276],{"class":2371},[2361,18726,11025],{"class":2402},[2361,18728,18281],{"class":4545},[2361,18730,18731,18733,18735,18737,18739,18741],{"class":2363,"line":3525},[2361,18732,3942],{"class":3616},[2361,18734,18288],{"class":3512},[2361,18736,3948],{"class":3616},[2361,18738,18293],{"class":2371},[2361,18740,11025],{"class":2402},[2361,18742,18298],{"class":4545},[2361,18744,18745,18747,18749,18751,18753,18755,18757,18759,18761],{"class":2363,"line":3531},[2361,18746,3942],{"class":3616},[2361,18748,18305],{"class":3512},[2361,18750,3948],{"class":3616},[2361,18752,18310],{"class":2371},[2361,18754,18313],{"class":2402},[2361,18756,4389],{"class":2371},[2361,18758,18318],{"class":2402},[2361,18760,4075],{"class":2371},[2361,18762,3954],{"class":2402},[2361,18764,18765],{"class":2363,"line":3603},[2361,18766,3528],{"emptyLinePlaceholder":1657},[2361,18768,18769],{"class":2363,"line":3682},[2361,18770,18771],{"class":4545},"\u002F\u002F Replace the token used in this variable\n",[2361,18773,18774,18776,18779,18781,18784,18787],{"class":2363,"line":3688},[2361,18775,3942],{"class":3616},[2361,18777,18778],{"class":3512}," axiomData",[2361,18780,3948],{"class":3616},[2361,18782,18783],{"class":2402}," [scrape",[2361,18785,18786],{"class":3616},"-",[2361,18788,18789],{"class":2402},"data];\n",[2361,18791,18792],{"class":2363,"line":3694},[2361,18793,3528],{"emptyLinePlaceholder":1657},[2361,18795,18796],{"class":2363,"line":3717},[2361,18797,18331],{"class":4545},[2361,18799,18800,18802,18805,18807,18810,18812,18814,18816,18818,18820],{"class":2363,"line":3770},[2361,18801,3942],{"class":3616},[2361,18803,18804],{"class":3512}," recordsToSend",[2361,18806,3948],{"class":3616},[2361,18808,18809],{"class":2402}," axiomData.",[2361,18811,4823],{"class":4003},[2361,18813,6635],{"class":2402},[2361,18815,4828],{"class":2367},[2361,18817,6641],{"class":2402},[2361,18819,4015],{"class":3616},[2361,18821,4018],{"class":2402},[2361,18823,18824,18827],{"class":2363,"line":3784},[2361,18825,18826],{"class":3616},"  return",[2361,18828,4018],{"class":2402},[2361,18830,18831],{"class":2363,"line":3160},[2361,18832,18833],{"class":2402},"    fields: {\n",[2361,18835,18836,18839,18842,18845],{"class":2363,"line":3808},[2361,18837,18838],{"class":2371},"      \"Customer Name\"",[2361,18840,18841],{"class":2402},": row[",[2361,18843,18844],{"class":3512},"0",[2361,18846,18847],{"class":2402},"],\n",[2361,18849,18850,18853,18855,18857],{"class":2363,"line":3817},[2361,18851,18852],{"class":2371},"      \"Email Address\"",[2361,18854,18841],{"class":2402},[2361,18856,1813],{"class":3512},[2361,18858,18847],{"class":2402},[2361,18860,18861,18864,18866,18868],{"class":2363,"line":4160},[2361,18862,18863],{"class":2371},"      \"Phone Number\"",[2361,18865,18841],{"class":2402},[2361,18867,10467],{"class":3512},[2361,18869,18847],{"class":2402},[2361,18871,18872,18875,18877,18880],{"class":2363,"line":4178},[2361,18873,18874],{"class":2371},"      \"Customer ID\"",[2361,18876,18841],{"class":2402},[2361,18878,18879],{"class":3512},"3",[2361,18881,18882],{"class":2402},"]\n",[2361,18884,18885],{"class":2363,"line":4186},[2361,18886,4260],{"class":2402},[2361,18888,18889],{"class":2363,"line":4192},[2361,18890,11152],{"class":2402},[2361,18892,18893],{"class":2363,"line":4197},[2361,18894,18895],{"class":2402},"});\n",[2361,18897,18898],{"class":2363,"line":4218},[2361,18899,3528],{"emptyLinePlaceholder":1657},[2361,18901,18902],{"class":2363,"line":4230},[2361,18903,18904],{"class":4545},"\u002F\u002F Send data to create multiple records in Airtable.\n",[2361,18906,18907,18909,18911,18913,18915,18918],{"class":2363,"line":4242},[2361,18908,11732],{"class":3616},[2361,18910,18431],{"class":3616},[2361,18912,18434],{"class":4003},[2361,18914,4169],{"class":2402},[2361,18916,18917],{"class":2367},"records",[2361,18919,18441],{"class":2402},[2361,18921,18922,18924],{"class":2363,"line":4257},[2361,18923,11222],{"class":3616},[2361,18925,4018],{"class":2402},[2361,18927,18928,18930,18932,18934,18936,18938],{"class":2363,"line":4263},[2361,18929,18452],{"class":3616},[2361,18931,3723],{"class":3512},[2361,18933,3948],{"class":3616},[2361,18935,4037],{"class":3616},[2361,18937,4040],{"class":4003},[2361,18939,18463],{"class":2402},[2361,18941,18942,18944,18946],{"class":2363,"line":4269},[2361,18943,18468],{"class":2402},[2361,18945,4051],{"class":2371},[2361,18947,4054],{"class":2402},[2361,18949,18950],{"class":2363,"line":4274},[2361,18951,18477],{"class":2402},[2361,18953,18954,18956,18958,18960,18962,18964],{"class":2363,"line":6268},[2361,18955,18482],{"class":2371},[2361,18957,3625],{"class":2402},[2361,18959,18487],{"class":2371},[2361,18961,18490],{"class":2402},[2361,18963,4075],{"class":2371},[2361,18965,4054],{"class":2402},[2361,18967,18968,18970,18972],{"class":2363,"line":6273},[2361,18969,18499],{"class":2371},[2361,18971,3625],{"class":2402},[2361,18973,18504],{"class":2371},[2361,18975,18976],{"class":2363,"line":2947},[2361,18977,18509],{"class":2402},[2361,18979,18980,18982,18984,18986,18988],{"class":2363,"line":6282},[2361,18981,18514],{"class":2402},[2361,18983,11201],{"class":3512},[2361,18985,1696],{"class":2402},[2361,18987,11206],{"class":4003},[2361,18989,4106],{"class":2402},[2361,18991,18992,18995],{"class":2363,"line":6287},[2361,18993,18994],{"class":2402},"        records: records ",[2361,18996,18997],{"class":4545},"\u002F\u002F Send multiple records in one request\n",[2361,18999,19000],{"class":2363,"line":6292},[2361,19001,19002],{"class":2402},"      })\n",[2361,19004,19005],{"class":2363,"line":6297},[2361,19006,18528],{"class":2402},[2361,19008,19009],{"class":2363,"line":6302},[2361,19010,3528],{"emptyLinePlaceholder":1657},[2361,19012,19013,19015],{"class":2363,"line":6307},[2361,19014,18537],{"class":3616},[2361,19016,18540],{"class":2402},[2361,19018,19019,19021,19023,19025,19027,19029,19031],{"class":2363,"line":6313},[2361,19020,18545],{"class":3616},[2361,19022,18548],{"class":3512},[2361,19024,3948],{"class":3616},[2361,19026,4037],{"class":3616},[2361,19028,4209],{"class":2402},[2361,19030,4212],{"class":4003},[2361,19032,4215],{"class":2402},[2361,19034,19035,19037,19039,19041,19044],{"class":2363,"line":6319},[2361,19036,18563],{"class":2402},[2361,19038,4224],{"class":4003},[2361,19040,4169],{"class":2402},[2361,19042,19043],{"class":2371},"'Records added successfully:'",[2361,19045,18573],{"class":2402},[2361,19047,19048,19050,19052],{"class":2363,"line":6325},[2361,19049,4233],{"class":2402},[2361,19051,18580],{"class":3616},[2361,19053,4018],{"class":2402},[2361,19055,19056,19058,19060,19062,19065],{"class":2363,"line":6330},[2361,19057,18563],{"class":2402},[2361,19059,4166],{"class":4003},[2361,19061,4169],{"class":2402},[2361,19063,19064],{"class":2371},"'Error adding records:'",[2361,19066,18596],{"class":2402},[2361,19068,19069],{"class":2363,"line":6335},[2361,19070,4260],{"class":2402},[2361,19072,19073,19075,19077],{"class":2363,"line":6340},[2361,19074,11263],{"class":2402},[2361,19076,4236],{"class":3616},[2361,19078,4239],{"class":2402},[2361,19080,19081,19083,19085,19087,19089],{"class":2363,"line":6345},[2361,19082,18613],{"class":2402},[2361,19084,4166],{"class":4003},[2361,19086,4169],{"class":2402},[2361,19088,18620],{"class":2371},[2361,19090,4254],{"class":2402},[2361,19092,19093],{"class":2363,"line":6350},[2361,19094,11293],{"class":2402},[2361,19096,19097],{"class":2363,"line":6355},[2361,19098,4266],{"class":2402},[2361,19100,19101],{"class":2363,"line":6360},[2361,19102,3528],{"emptyLinePlaceholder":1657},[2361,19104,19105],{"class":2363,"line":6365},[2361,19106,19107],{"class":4545},"\u002F\u002F Call the function to send the records to Airtable\n",[2361,19109,19110,19112],{"class":2363,"line":3383},[2361,19111,18644],{"class":4003},[2361,19113,19114],{"class":2402},"(recordsToSend);\n",[1611,19116,19118],{"id":19117},"create-multiple-records-more-than-10","Create multiple records (more than 10)",[1567,19120],{},[1570,19122,19123],{},"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.",[1729,19125,19126],{},[2191,19127,19128,19138,19143],{},[1580,19129,19130,1871,19132,3634,19134,18216,19136,18219],{},[1681,19131,18209],{},[1681,19133,18212],{},[1681,19135,18215],{},[1681,19137,18116],{},[1580,19139,19140,19142],{},[1681,19141,18682],{},": Remove example token and insert your own.",[1580,19144,19145,19148],{},[1681,19146,19147],{},"Fields",": Edit the fields in \"recordsToSend\", to match your table.",[2353,19150,19152],{"className":2390,"code":19151,"language":2392,"meta":1640,"style":1640},"\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",[1740,19153,19154,19158,19172,19187,19202,19222,19226,19230,19244,19248,19252,19274,19280,19284,19294,19304,19314,19324,19328,19332,19336,19340,19344,19358,19364,19378,19386,19390,19404,19412,19416,19429,19433,19437,19443,19459,19471,19479,19491,19495,19503,19515,19519,19523,19527,19532,19557,19594,19619,19660,19672,19676,19680,19684,19689],{"__ignoreMap":1640},[2361,19155,19156],{"class":2363,"line":2364},[2361,19157,18247],{"class":4545},[2361,19159,19160,19162,19164,19166,19168,19170],{"class":2363,"line":1644},[2361,19161,3942],{"class":3616},[2361,19163,18254],{"class":3512},[2361,19165,3948],{"class":3616},[2361,19167,18259],{"class":2371},[2361,19169,11025],{"class":2402},[2361,19171,18264],{"class":4545},[2361,19173,19174,19176,19178,19180,19182,19184],{"class":2363,"line":1641},[2361,19175,3942],{"class":3616},[2361,19177,18271],{"class":3512},[2361,19179,3948],{"class":3616},[2361,19181,18276],{"class":2371},[2361,19183,11025],{"class":2402},[2361,19185,19186],{"class":4545},"\u002F\u002F Add Table Name \n",[2361,19188,19189,19191,19193,19195,19197,19199],{"class":2363,"line":3525},[2361,19190,3942],{"class":3616},[2361,19192,18288],{"class":3512},[2361,19194,3948],{"class":3616},[2361,19196,18293],{"class":2371},[2361,19198,11025],{"class":2402},[2361,19200,19201],{"class":4545},"\u002F\u002F Add Personal Access Token\n",[2361,19203,19204,19206,19208,19210,19212,19214,19216,19218,19220],{"class":2363,"line":3531},[2361,19205,3942],{"class":3616},[2361,19207,18305],{"class":3512},[2361,19209,3948],{"class":3616},[2361,19211,18310],{"class":2371},[2361,19213,18313],{"class":2402},[2361,19215,4389],{"class":2371},[2361,19217,18318],{"class":2402},[2361,19219,4075],{"class":2371},[2361,19221,3954],{"class":2402},[2361,19223,19224],{"class":2363,"line":3603},[2361,19225,3528],{"emptyLinePlaceholder":1657},[2361,19227,19228],{"class":2363,"line":3682},[2361,19229,18771],{"class":4545},[2361,19231,19232,19234,19236,19238,19240,19242],{"class":2363,"line":3688},[2361,19233,3942],{"class":3616},[2361,19235,18778],{"class":3512},[2361,19237,3948],{"class":3616},[2361,19239,18783],{"class":2402},[2361,19241,18786],{"class":3616},[2361,19243,18789],{"class":2402},[2361,19245,19246],{"class":2363,"line":3694},[2361,19247,3528],{"emptyLinePlaceholder":1657},[2361,19249,19250],{"class":2363,"line":3717},[2361,19251,18331],{"class":4545},[2361,19253,19254,19256,19258,19260,19262,19264,19266,19268,19270,19272],{"class":2363,"line":3770},[2361,19255,3942],{"class":3616},[2361,19257,18804],{"class":3512},[2361,19259,3948],{"class":3616},[2361,19261,18809],{"class":2402},[2361,19263,4823],{"class":4003},[2361,19265,6635],{"class":2402},[2361,19267,4828],{"class":2367},[2361,19269,6641],{"class":2402},[2361,19271,4015],{"class":3616},[2361,19273,4018],{"class":2402},[2361,19275,19276,19278],{"class":2363,"line":3784},[2361,19277,18826],{"class":3616},[2361,19279,4018],{"class":2402},[2361,19281,19282],{"class":2363,"line":3160},[2361,19283,18833],{"class":2402},[2361,19285,19286,19288,19290,19292],{"class":2363,"line":3808},[2361,19287,18838],{"class":2371},[2361,19289,18841],{"class":2402},[2361,19291,18844],{"class":3512},[2361,19293,18847],{"class":2402},[2361,19295,19296,19298,19300,19302],{"class":2363,"line":3817},[2361,19297,18852],{"class":2371},[2361,19299,18841],{"class":2402},[2361,19301,1813],{"class":3512},[2361,19303,18847],{"class":2402},[2361,19305,19306,19308,19310,19312],{"class":2363,"line":4160},[2361,19307,18863],{"class":2371},[2361,19309,18841],{"class":2402},[2361,19311,10467],{"class":3512},[2361,19313,18847],{"class":2402},[2361,19315,19316,19318,19320,19322],{"class":2363,"line":4178},[2361,19317,18874],{"class":2371},[2361,19319,18841],{"class":2402},[2361,19321,18879],{"class":3512},[2361,19323,18882],{"class":2402},[2361,19325,19326],{"class":2363,"line":4186},[2361,19327,4260],{"class":2402},[2361,19329,19330],{"class":2363,"line":4192},[2361,19331,11152],{"class":2402},[2361,19333,19334],{"class":2363,"line":4197},[2361,19335,18895],{"class":2402},[2361,19337,19338],{"class":2363,"line":4218},[2361,19339,3528],{"emptyLinePlaceholder":1657},[2361,19341,19342],{"class":2363,"line":4230},[2361,19343,18904],{"class":4545},[2361,19345,19346,19348,19350,19352,19354,19356],{"class":2363,"line":4242},[2361,19347,11732],{"class":3616},[2361,19349,18431],{"class":3616},[2361,19351,18434],{"class":4003},[2361,19353,4169],{"class":2402},[2361,19355,18917],{"class":2367},[2361,19357,18441],{"class":2402},[2361,19359,19360,19362],{"class":2363,"line":4257},[2361,19361,11222],{"class":3616},[2361,19363,4018],{"class":2402},[2361,19365,19366,19368,19370,19372,19374,19376],{"class":2363,"line":4263},[2361,19367,18452],{"class":3616},[2361,19369,3723],{"class":3512},[2361,19371,3948],{"class":3616},[2361,19373,4037],{"class":3616},[2361,19375,4040],{"class":4003},[2361,19377,18463],{"class":2402},[2361,19379,19380,19382,19384],{"class":2363,"line":4269},[2361,19381,18468],{"class":2402},[2361,19383,4051],{"class":2371},[2361,19385,4054],{"class":2402},[2361,19387,19388],{"class":2363,"line":4274},[2361,19389,18477],{"class":2402},[2361,19391,19392,19394,19396,19398,19400,19402],{"class":2363,"line":6268},[2361,19393,18482],{"class":2371},[2361,19395,3625],{"class":2402},[2361,19397,18487],{"class":2371},[2361,19399,18490],{"class":2402},[2361,19401,4075],{"class":2371},[2361,19403,4054],{"class":2402},[2361,19405,19406,19408,19410],{"class":2363,"line":6273},[2361,19407,18499],{"class":2371},[2361,19409,3625],{"class":2402},[2361,19411,18504],{"class":2371},[2361,19413,19414],{"class":2363,"line":2947},[2361,19415,18509],{"class":2402},[2361,19417,19418,19420,19422,19424,19426],{"class":2363,"line":6282},[2361,19419,18514],{"class":2402},[2361,19421,11201],{"class":3512},[2361,19423,1696],{"class":2402},[2361,19425,11206],{"class":4003},[2361,19427,19428],{"class":2402},"({ records }) \n",[2361,19430,19431],{"class":2363,"line":6287},[2361,19432,18528],{"class":2402},[2361,19434,19435],{"class":2363,"line":6292},[2361,19436,3528],{"emptyLinePlaceholder":1657},[2361,19438,19439,19441],{"class":2363,"line":6297},[2361,19440,18537],{"class":3616},[2361,19442,18540],{"class":2402},[2361,19444,19445,19447,19449,19451,19453,19455,19457],{"class":2363,"line":6302},[2361,19446,18545],{"class":3616},[2361,19448,18548],{"class":3512},[2361,19450,3948],{"class":3616},[2361,19452,4037],{"class":3616},[2361,19454,4209],{"class":2402},[2361,19456,4212],{"class":4003},[2361,19458,4215],{"class":2402},[2361,19460,19461,19463,19465,19467,19469],{"class":2363,"line":6307},[2361,19462,18563],{"class":2402},[2361,19464,4224],{"class":4003},[2361,19466,4169],{"class":2402},[2361,19468,19043],{"class":2371},[2361,19470,18573],{"class":2402},[2361,19472,19473,19475,19477],{"class":2363,"line":6313},[2361,19474,4233],{"class":2402},[2361,19476,18580],{"class":3616},[2361,19478,4018],{"class":2402},[2361,19480,19481,19483,19485,19487,19489],{"class":2363,"line":6319},[2361,19482,18563],{"class":2402},[2361,19484,4166],{"class":4003},[2361,19486,4169],{"class":2402},[2361,19488,19064],{"class":2371},[2361,19490,18596],{"class":2402},[2361,19492,19493],{"class":2363,"line":6325},[2361,19494,4260],{"class":2402},[2361,19496,19497,19499,19501],{"class":2363,"line":6330},[2361,19498,11263],{"class":2402},[2361,19500,4236],{"class":3616},[2361,19502,4239],{"class":2402},[2361,19504,19505,19507,19509,19511,19513],{"class":2363,"line":6335},[2361,19506,18613],{"class":2402},[2361,19508,4166],{"class":4003},[2361,19510,4169],{"class":2402},[2361,19512,18620],{"class":2371},[2361,19514,4254],{"class":2402},[2361,19516,19517],{"class":2363,"line":6340},[2361,19518,11293],{"class":2402},[2361,19520,19521],{"class":2363,"line":6345},[2361,19522,4266],{"class":2402},[2361,19524,19525],{"class":2363,"line":6350},[2361,19526,3528],{"emptyLinePlaceholder":1657},[2361,19528,19529],{"class":2363,"line":6355},[2361,19530,19531],{"class":4545},"\u002F\u002F Function to batch and send records in chunks of 10\n",[2361,19533,19534,19536,19538,19541,19543,19545,19547,19550,19552,19555],{"class":2363,"line":6360},[2361,19535,11732],{"class":3616},[2361,19537,18431],{"class":3616},[2361,19539,19540],{"class":4003}," sendInBatches",[2361,19542,4169],{"class":2402},[2361,19544,18917],{"class":2367},[2361,19546,3634],{"class":2402},[2361,19548,19549],{"class":2367},"batchSize",[2361,19551,3948],{"class":3616},[2361,19553,19554],{"class":3512}," 10",[2361,19556,18441],{"class":2402},[2361,19558,19559,19562,19564,19566,19569,19571,19574,19577,19580,19583,19586,19588,19591],{"class":2363,"line":6365},[2361,19560,19561],{"class":3616},"  for",[2361,19563,4151],{"class":2402},[2361,19565,14083],{"class":3616},[2361,19567,19568],{"class":2402}," i ",[2361,19570,6580],{"class":3616},[2361,19572,19573],{"class":3512}," 0",[2361,19575,19576],{"class":2402},"; i ",[2361,19578,19579],{"class":3616},"\u003C",[2361,19581,19582],{"class":2402}," records.",[2361,19584,19585],{"class":3512},"length",[2361,19587,19576],{"class":2402},[2361,19589,19590],{"class":3616},"+=",[2361,19592,19593],{"class":2402}," batchSize) {\n",[2361,19595,19596,19598,19601,19603,19605,19608,19611,19613,19616],{"class":2363,"line":3383},[2361,19597,18452],{"class":3616},[2361,19599,19600],{"class":3512}," batch",[2361,19602,3948],{"class":3616},[2361,19604,19582],{"class":2402},[2361,19606,19607],{"class":4003},"slice",[2361,19609,19610],{"class":2402},"(i, i ",[2361,19612,10071],{"class":3616},[2361,19614,19615],{"class":2402}," batchSize); ",[2361,19617,19618],{"class":4545},"\u002F\u002F Get a batch of up to 10 records\n",[2361,19620,19621,19623,19625,19627,19630,19633,19635,19638,19640,19643,19646,19649,19651,19653,19656,19658],{"class":2363,"line":6374},[2361,19622,18613],{"class":2402},[2361,19624,4224],{"class":4003},[2361,19626,4169],{"class":2402},[2361,19628,19629],{"class":2371},"`Sending batch ${",[2361,19631,19632],{"class":2402},"Math",[2361,19634,1696],{"class":2371},[2361,19636,19637],{"class":4003},"floor",[2361,19639,4169],{"class":2371},[2361,19641,19642],{"class":2402},"i",[2361,19644,19645],{"class":3616}," \u002F",[2361,19647,19648],{"class":2402}," batchSize",[2361,19650,6641],{"class":2371},[2361,19652,10071],{"class":3616},[2361,19654,19655],{"class":3512}," 1",[2361,19657,4075],{"class":2371},[2361,19659,6615],{"class":2402},[2361,19661,19662,19664,19666,19669],{"class":2363,"line":6379},[2361,19663,11744],{"class":3616},[2361,19665,18434],{"class":4003},[2361,19667,19668],{"class":2402},"(batch); ",[2361,19670,19671],{"class":4545},"\u002F\u002F Send the batch to Airtable\n",[2361,19673,19674],{"class":2363,"line":6384},[2361,19675,11293],{"class":2402},[2361,19677,19678],{"class":2363,"line":6389},[2361,19679,4266],{"class":2402},[2361,19681,19682],{"class":2363,"line":6394},[2361,19683,3528],{"emptyLinePlaceholder":1657},[2361,19685,19686],{"class":2363,"line":6399},[2361,19687,19688],{"class":4545},"\u002F\u002F Call the function to send the records to Airtable in batches\n",[2361,19690,19691,19694],{"class":2363,"line":2681},[2361,19692,19693],{"class":4003},"sendInBatches",[2361,19695,19114],{"class":2402},[1562,19697,2410],{"id":2409},[1570,19699,19700],{},"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.",[2191,19702,19703,19706,19709],{},[1580,19704,19705],{},"Check for console logs in the runtime browser.",[1580,19707,19708],{},"Ensure your credentials are correct.",[1580,19710,19711],{},"Make sure all field names match exactly with your Airtable table.",[1562,19713,2430],{"id":2429},[1570,19715,19716],{},"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.",[2445,19718,19719],{},"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":1640,"searchDepth":1641,"depth":1641,"links":19721},[19722,19723,19729,19730],{"id":2181,"depth":1644,"text":2182},{"id":18159,"depth":1644,"text":18160,"children":19724},[19725,19726,19727,19728],{"id":18168,"depth":1641,"text":18169},{"id":18183,"depth":1641,"text":18184},{"id":18650,"depth":1641,"text":18651},{"id":19117,"depth":1641,"text":19118},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to post scraped data to Airtable and create new records, using axiom.ai's write JavaScript step and webhooks.",{"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":19733,"platfrom":19735,"video":19737},[2463,2464,19734],"intergration",[19736],"Airtable","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FM_OVeykbYro?rel=0&amp;",{"title":18029,"description":19731},"guides\u002Fpost-data-to-airtable","0XXXlDEEgXk3aSaUN6tndhALgeN-loYvo4xUMfvE5V4",{"id":19742,"title":19743,"body":19744,"date":1651,"description":19923,"extension":1653,"meta":19924,"navigation":1657,"order":1651,"path":19928,"seo":19929,"stem":19930,"__hash__":19931},"guides\u002Fguides\u002Fpost-data-to-make.md","How to trigger and post data to Make with an axiom.ai automation",{"type":1555,"value":19745,"toc":19914},[19746,19748,19751,19757,19759,19761,19763,19783,19787,19790,19794,19816,19820,19839,19843,19849,19866,19870,19873,19876,19880,19887,19889,19895,19905,19909,19911],[1567,19747],{},[1570,19749,19750],{},"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.",[1570,19752,19753,19754,13823],{},"This guide assumes you have a Make account and have created your axiom.ai automation. To learn more about our Make integration, see our ",[1596,19755,19756],{"href":764},"working with Make",[1558,19758],{},[1562,19760,2182],{"id":2181},[1570,19762,2187],{},[1729,19764,19765],{},[2191,19766,19767,19773,19777],{},[1580,19768,19769,2197,19771,1696],{},[1681,19770,1628],{},[1596,19772,2201],{"href":2200},[1580,19774,19775,2207],{},[1681,19776,2206],{},[1580,19778,19779,2213,19781,1696],{},[1681,19780,2212],{},[1740,19782,2216],{},[1562,19784,19786],{"id":19785},"trigger-and-send-data-to-make-with-an-axiomai-automation","Trigger and send data to Make with an axiom.ai automation",[1570,19788,19789],{},"Open Make, and either edit or create a new scenario to get started, then follow the steps below.",[2227,19791],{"src":19792,"alt":19793},"\u002Fdocs\u002Fguides\u002Fmake-find-webhooks.jpg","find the webhook app in Make",[1729,19795,19796],{},[2191,19797,19798,19804,19810],{},[1580,19799,19800,19803],{},[1681,19801,19802],{},"Log into Make",": Click on \"Scenarios\", and open an existing or create a new scenario.",[1580,19805,19806,19809],{},[1681,19807,19808],{},"If the App selector is open",": Click \"Webhooks\", or click the plus button to open the app selector.",[1580,19811,19812,19815],{},[1681,19813,19814],{},"\"Triggers\"",": Select \"Custom webhook\".",[2227,19817],{"src":19818,"alt":19819},"\u002Fdocs\u002Fguides\u002Fmake-custom-webhook.jpg","select custom webhook in Make",[1729,19821,19822],{},[2191,19823,19824,19829,19834],{},[1580,19825,19826,19828],{},[1681,19827,9775],{},": Give your webhook a name or choose an existing one, then click \"Save\".",[1580,19830,19831,19833],{},[1681,19832,269],{},": \"Copy my address\" to get the webhook endpoint to add into your browser automation.",[1580,19835,19836,19838],{},[1681,19837,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.",[2227,19840],{"src":19841,"alt":19842},"\u002Fdocs\u002Fguides\u002Fmake-copy-webhook.jpg","Listening for data webhook in Make",[1570,19844,19845,19846,19848],{},"Switching to axiom.ai, use the step finder to add the ",[1596,19847,9311],{"href":1194}," step and configure it.",[1729,19850,19851],{},[2191,19852,19853,19858],{},[1580,19854,19855,19857],{},[1681,19856,2212],{},": Paste the endpoint from Make into this field.",[1580,19859,19860,19862,19863,19865],{},[1681,19861,269],{},":  \"Insert data\" and select ",[1740,19864,1845],{}," or any data you wish to send to Make.",[2227,19867],{"src":19868,"alt":19869},"\u002Fdocs\u002Fguides\u002Faxiom-webhook-set-up.jpg","Configure the trigger webhook step and post scraped data to Make",[1562,19871,14305],{"id":19872},"use-cases",[1570,19874,19875],{},"Using Make with axiom.ai can unlock a lot of opportunities, let's drive into some use cases that you can use them for.",[1611,19877,19879],{"id":19878},"post-data-to-excel","Post data to Excel",[1570,19881,19882,19883,19886],{},"To send data to Excel, set up your automation and Make scenario as normal - follow the ",[1596,19884,19786],{"href":19885},"#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.",[1562,19888,2410],{"id":2409},[1570,19890,19891,19892,19894],{},"Now click ",[1681,19893,5465],{}," in axiom.ai and switch back to Make.",[1729,19896,19897],{},[2191,19898,19899,19902],{},[1580,19900,19901],{},"Once the axiom.ai automation has run, check in Make for the message \"successfully determined\".",[1580,19903,19904],{},"This means the data has been successfully sent.",[2227,19906],{"src":19907,"alt":19908},"\u002Fdocs\u002Fguides\u002Fmake-successfuly-determined.jpg","Successfully determined data format in Make",[1562,19910,2430],{"id":2429},[1570,19912,19913],{},"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":1640,"searchDepth":1641,"depth":1641,"links":19915},[19916,19917,19918,19921,19922],{"id":2181,"depth":1644,"text":2182},{"id":19785,"depth":1644,"text":19786},{"id":19872,"depth":1644,"text":14305,"children":19919},[19920],{"id":19878,"depth":1641,"text":19879},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":19925,"platfrom":19926,"video":19927},[2463,2464,19734],[763],"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FaGyCO50Gl3s?rel=0&amp;","\u002Fguides\u002Fpost-data-to-make",{"title":19743,"description":19923},"guides\u002Fpost-data-to-make","gO96h9fAt9NsVI7JB5KYTEbaoBRrPfLKCDw7RBwsiDs",{"id":19933,"title":19934,"body":19935,"date":1651,"description":20209,"extension":1653,"meta":20210,"navigation":1657,"order":1651,"path":20215,"seo":20216,"stem":20217,"__hash__":20218},"guides\u002Fguides\u002Fpost-on-threads.md","How to automate posting on Meta’s new text message app Threads",{"type":1555,"value":19936,"toc":20204},[19937,19939,19950,19952,19955,19982,19984,19994,20194,20196],[1567,19938],{},[1570,19940,19941,19942,19946,19947,1696],{},"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, ",[1596,19943,19945],{"href":19944},"\u002Fdocs\u002Ftutorials\u002Ffiles","uploads"," an image and posts it. This Threads automation takes only a few minutes to make using our ",[1596,19948,19949],{"href":1361},"builder",[1562,19951,12780],{"id":12779},[1570,19953,19954],{},"Create a Google Sheet add some Post to the sheet. See example below.",[8690,19956,19957,19965],{},[8693,19958,19959],{},[8696,19960,19961,19963],{},[8699,19962,5163],{},[8699,19964,12794],{},[8706,19966,19967,19975],{},[8696,19968,19969,19972],{},[8711,19970,19971],{},"Axiom can automate Instagram",[8711,19973,19974],{},"\u002FUsers\u002Fthudercloudone\u002FDesktop\u002FScreenshot 2024-04-05 at 12.20.24.png",[8696,19976,19977,19980],{},[8711,19978,19979],{},"Axiom can automate anything in the browser",[8711,19981,19974],{},[1562,19983,8731],{"id":8730},[1570,19985,12823,19986,12828,19990,8740,19992,12834],{},[1596,19987,5052],{"href":19988,"rel":19989},"https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Faxiom-browser-automation\u002Fcpgamigjcbffkaiciiepndmonbfdimbb?hl=en-GB",[3874],[1681,19991,8739],{},[1681,19993,12833],{},[1729,19995,19996],{},[1577,19997,19998,20026],{},[1580,19999,20000,1738,20002,20004],{},[1681,20001,1737],{},[1740,20003,1742],{},[1577,20005,20006,20010,20014,20020],{},[1580,20007,20008,17811],{},[1740,20009,1749],{},[1580,20011,20012,9563],{},[1740,20013,1755],{},[1580,20015,20016,1810,20018,1696],{},[1740,20017,8780],{},[1740,20019,8784],{},[1580,20021,20022,1810,20024,1696],{},[1740,20023,6877],{},[1740,20025,8792],{},[1580,20027,20028,1738,20030,20032,20042],{},[1681,20029,1761],{},[1740,20031,667],{},[1577,20033,20034],{},[1580,20035,20036,1780,20038,1784,20040,1696],{},[1740,20037,2109],{},[1740,20039,1841],{},[1740,20041,1787],{},[1577,20043,20044,20060,20091,20111,20139,20164],{},[1580,20045,20046,1738,20048,20051],{},[1681,20047,1770],{},[1740,20049,20050],{},"Go to page: Threads",[1577,20052,20053],{},[1580,20054,20055,1871,20057,1696],{},[1740,20056,1779],{},[1740,20058,20059],{},"https:\u002F\u002Fwww.threads.net",[1580,20061,20062,1738,20064,20067],{},[1681,20063,1793],{},[1740,20065,20066],{},"Click element: Open post modal",[1577,20068,20069,20082],{},[1580,20070,20071,1780,20073,20075,20076,20079,20080,1696],{},[1740,20072,1803],{},[1740,20074,1803],{},", highlight the ",[1740,20077,20078],{},"Post"," button and press ",[1740,20081,5274],{},[1580,20083,20084,1810,20086,5267,20088,1696],{},[1740,20085,269],{},[1740,20087,17028],{},[1740,20089,20090],{},"\"Use element text instead of HTML\"",[1580,20092,20093,1738,20095,20098],{},[1681,20094,1818],{},[1740,20096,20097],{},"Enter text: Message",[1577,20099,20100],{},[1580,20101,20102,1780,20104,20106,20107,17358,20109,1696],{},[1740,20103,2587],{},[1740,20105,1841],{},", select column ",[1740,20108,5163],{},[1740,20110,1787],{},[1580,20112,20113,1738,20115,20118],{},[1681,20114,1860],{},[1740,20116,20117],{},"Upload a file: Add image",[1577,20119,20120,20129],{},[1580,20121,20122,1780,20124,20126,20127,1696],{},[1740,20123,1803],{},[1740,20125,1803],{},", highlight the image upload icon, click, then press ",[1740,20128,5274],{},[1580,20130,20131,1780,20133,20106,20135,17358,20137,1696],{},[1740,20132,2822],{},[1740,20134,1841],{},[1740,20136,12794],{},[1740,20138,1787],{},[1580,20140,20141,1738,20143,20145],{},[1681,20142,1888],{},[1740,20144,11543],{},[1577,20146,20147,20156],{},[1580,20148,20149,1780,20151,20075,20153,20155],{},[1740,20150,1803],{},[1740,20152,1803],{},[1740,20154,20078],{}," button again and click.",[1580,20157,20158,1810,20160,5267,20162,1696],{},[1740,20159,269],{},[1740,20161,17028],{},[1740,20163,20090],{},[1580,20165,20166,1738,20168,20170],{},[1681,20167,1925],{},[1740,20169,1928],{},[1577,20171,20172,20177,20182,20188],{},[1580,20173,20174,20176],{},[1740,20175,1749],{},": Search for and select the same Google Sheet.",[1580,20178,20179,20181],{},[1740,20180,1755],{},": Choose the same tab or leave blank.",[1580,20183,20184,1810,20186,1696],{},[1740,20185,13066],{},[1740,20187,1813],{},[1580,20189,20190,1810,20192,1696],{},[1740,20191,13074],{},[1740,20193,1813],{},[1562,20195,2430],{"id":2429},[1570,20197,20198,20199,20203],{},"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 ",[1596,20200,20202],{"href":20201},"\u002Fdocs\u002Ftutorials\u002Ffiles\u002Fupload-cloud","‘Upload a file from Google Drive’"," to run in the cloud.",{"title":1640,"searchDepth":1641,"depth":1641,"links":20205},[20206,20207,20208],{"id":12779,"depth":1644,"text":12780},{"id":8730,"depth":1644,"text":8731},{"id":2429,"depth":1644,"text":2430},"Learn how to automate sending posts on threads with this step by step guide for creating a browser bot.",{"type":2152,"format":1729,"intent_type":2682,"intent":2683,"tags":20211,"platfrom":20212},[2949,13108],[20213,20214],"Threads","Meta","\u002Fguides\u002Fpost-on-threads",{"title":19934,"description":20209},"guides\u002Fpost-on-threads","h95_A5cQ2vTqdpbD2T-NNzBJDndx4ucPTjtaIoeALPU",{"id":20220,"title":20221,"body":20222,"date":1651,"description":20526,"extension":1653,"meta":20527,"navigation":1657,"order":1651,"path":20532,"seo":20533,"stem":20534,"__hash__":20535},"guides\u002Fguides\u002Fpower-automate.md","How to trigger axiom.ai automations using Power Automate",{"type":1555,"value":20223,"toc":20516},[20224,20226,20229,20232,20234,20236,20256,20260,20263,20267,20276,20297,20304,20346,20350,20354,20362,20392,20396,20425,20429,20436,20478,20482,20484,20487,20503,20506,20508,20511],[1567,20225],{},[1570,20227,20228],{},"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.",[1570,20230,20231],{},"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.",[1562,20233,2182],{"id":2181},[1570,20235,2187],{},[1729,20237,20238],{},[2191,20239,20240,20246,20250],{},[1580,20241,20242,2197,20244,1696],{},[1681,20243,1628],{},[1596,20245,2201],{"href":2200},[1580,20247,20248,2207],{},[1681,20249,2206],{},[1580,20251,20252,2213,20254,1696],{},[1681,20253,2212],{},[1740,20255,2216],{},[1562,20257,20259],{"id":20258},"trigger-an-axiomai-automation-with-power-automate","Trigger an axiom.ai automation with Power Automate",[1570,20261,20262],{},"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.",[1611,20264,20266],{"id":20265},"triggering-with-the-power-automate-desktop-app","Triggering with the Power Automate desktop app",[1570,20268,20269,20270,20275],{},"You will first need to ensure you have installed ",[1596,20271,20274],{"href":20272,"rel":20273},"https:\u002F\u002Fwww.microsoft.com\u002Fstore\u002FproductId\u002F9NFTCH6J7FHV?ocid=pdpshare",[3874],"Power Automate"," from the Microsoft Store.",[1729,20277,20278],{},[2191,20279,20280,20286,20291],{},[1580,20281,20282,20285],{},[1681,20283,20284],{},"New flow",": Open Power Automate, tap \"+ New flow\" to create a new flow.",[1580,20287,20288,20290],{},[1681,20289,2255],{},": You can add any number of steps to your flow, or use an existing flow to trigger your axiom.ai automation.",[1580,20292,20293,20296],{},[1681,20294,20295],{},"Invoke web service",": Search for the \"invoke web service\" action, add this to your flow.",[1570,20298,20299,20300,20303],{},"To configure the ",[2441,20301,20302],{},"invoke web service"," action, you'll need to enable the following:",[1729,20305,20306],{},[2191,20307,20308,20314,20320,20327,20333,20340],{},[1580,20309,20310,2213,20312,1696],{},[1681,20311,5537],{},[1740,20313,2216],{},[1580,20315,20316,1810,20318,1696],{},[1681,20317,13805],{},[1740,20319,2262],{},[1580,20321,20322,1810,20325,1696],{},[1681,20323,20324],{},"Accept",[1740,20326,10444],{},[1580,20328,20329,1810,20331,1696],{},[1681,20330,13812],{},[1740,20332,10444],{},[1580,20334,20335,20337,20338,13823],{},[1681,20336,2267],{},": This should be set to the per our ",[1596,20339,13822],{"href":8319},[1580,20341,20342,20345],{},[1681,20343,20344],{},"Encode request body",": This should be disabled.",[2227,20347],{"src":20348,"alt":20349},"\u002Fdocs\u002Fguides\u002Fpower-automate-trigger-desktop.png","set up invoke web service action in power automate",[1611,20351,20353],{"id":20352},"triggering-with-the-power-automate-web-app","Triggering with the Power Automate web app",[1570,20355,20356,20357,20361],{},"You can access ",[1596,20358,20274],{"href":20359,"rel":20360},"https:\u002F\u002Fmake.powerautomate.com\u002F",[3874]," on the web. This requires a paid subscription with Power Automate.",[1729,20363,20364],{},[2191,20365,20366,20376,20382],{},[1580,20367,20368,20371,20372,20375],{},[1681,20369,20370],{},"Create a new flow",": Open ",[1596,20373,20274],{"href":20359,"rel":20374},[3874]," on the web, create a new \"instant-\" or \"scheduled cloud flow\".",[1580,20377,20378,20381],{},[1681,20379,20380],{},"Select trigger",": Set to your desired trigger: this guide will focus on the \"manually trigger a flow\" option.",[1580,20383,20384,20387,20388,20391],{},[1681,20385,20386],{},"Add HTTP action",": Click \"new step\" and search for the ",[2441,20389,20390],{},"HTTP"," action.",[1570,20393,20299,20394,20303],{},[2441,20395,20390],{},[1729,20397,20398],{},[2191,20399,20400,20406,20412,20419],{},[1580,20401,20402,2213,20404,1696],{},[1681,20403,5537],{},[1740,20405,2216],{},[1580,20407,20408,1810,20410,1696],{},[1681,20409,13805],{},[1740,20411,2262],{},[1580,20413,20414,1810,20416,1696],{},[1681,20415,16048],{},[1740,20417,20418],{},"Content-Type: application\u002Fjson",[1580,20420,20421,20337,20423,13823],{},[1681,20422,2267],{},[1596,20424,13822],{"href":8319},[1562,20426,20428],{"id":20427},"trigger-a-power-automate-flow-with-an-axiomai-automation","Trigger a Power Automate flow with an axiom.ai automation",[1570,20430,20431,20432,20435],{},"This guide is only applicable to ",[1596,20433,20274],{"href":20359,"rel":20434},[3874]," on the web. Power Automate's desktop app currently does not support triggers via webhook.",[1729,20437,20438],{},[2191,20439,20440,20447,20452,20461,20467,20473],{},[1580,20441,20442,20371,20444,20375],{},[1681,20443,20370],{},[1596,20445,20274],{"href":20359,"rel":20446},[3874],[1580,20448,20449,20451],{},[1681,20450,20380],{},": Set your trigger to \"when a HTTP request is received\".",[1580,20453,20454,20456,20457,20460],{},[1681,20455,2255],{},": Set the \"when a HTTP request is received\" action to allow for triggering from \"anyone\". ",[2441,20458,20459],{},"Note: consider your organisations security needs before enabling this",". Optionally, you can set a \"request body JSON schema\".",[1580,20462,20463,20466],{},[1681,20464,20465],{},"Save & get URL",": Save your flow to generate the webhook URL, save this for later: this will be unique for your flow.",[1580,20468,20469,20472],{},[1681,20470,20471],{},"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.",[1580,20474,20475,20477],{},[1681,20476,13873],{},": 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.",[2227,20479],{"src":20480,"alt":20481},"\u002Fdocs\u002Fguides\u002Fpower-automate-trigger-a-webhook.jpg","set up trigger a wehook step in axiom.ai",[1562,20483,2410],{"id":2409},[1570,20485,20486],{},"Now that you've built out your entire workflow, you can test it!",[1729,20488,20489],{},[2191,20490,20491,20497],{},[1580,20492,20493,20496],{},[1681,20494,20495],{},"Trigger axiom.ai automation",": Open the Power Automate flow you have created to trigger your automation. Hit \"Run\".",[1580,20498,20499,20502],{},[1681,20500,20501],{},"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.",[1570,20504,20505],{},"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.",[1562,20507,2430],{"id":2429},[1570,20509,20510],{},"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.",[1570,20512,20513],{},[2441,20514,20515],{},"Information valid as of 22nd October 2024..",{"title":1640,"searchDepth":1641,"depth":1641,"links":20517},[20518,20519,20523,20524,20525],{"id":2181,"depth":1644,"text":2182},{"id":20258,"depth":1644,"text":20259,"children":20520},[20521,20522],{"id":20265,"depth":1641,"text":20266},{"id":20352,"depth":1641,"text":20353},{"id":20427,"depth":1644,"text":20428},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Use Power Automate to trigger your axiom.ai automations and use axiom.ai automations to trigger your flows.",{"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":20528,"platfrom":20529},[2463,2464,19734],[20530,20531],"power automate","microsoft","\u002Fguides\u002Fpower-automate",{"title":20221,"description":20526},"guides\u002Fpower-automate","QNsoS6BeB0dqhrICsXZWn0mm4ZpjhILTcIgP61Pup0c",{"id":20537,"title":20538,"body":20539,"date":20820,"description":20821,"extension":1653,"meta":20822,"navigation":1657,"order":1651,"path":20828,"seo":20829,"stem":20830,"__hash__":20831},"guides\u002Fguides\u002Fsales-navigator-connect.md","How to automate your lead connections on LinkedIn Sales Navigator",{"type":1555,"value":20540,"toc":20813},[20541,20543,20557,20559,20561,20563,20567,20572,20577,20579,20583,20681,20685,20692,20694,20698,20809],[1567,20542],{},[1570,20544,16238,20545,20548,20549,20552,20553,20556],{},[1681,20546,20547],{},"Saved list of leads",", extracting their profile links and names. It then opens each profile link in Chrome, clicks on the menu option, clicks  ",[1681,20550,20551],{},"Connect"," and enters a customized message for each lead using their name. Finally, it clicks  ",[1681,20554,20555],{},"Send invitation",". This process ensures that a personalized message is sent iteratively to each lead when connecting.",[1558,20558],{},[1562,20560,16248],{"id":16247},[1570,20562,16251],{},[1562,20564,20566],{"id":20565},"install-the-sales-navigator-messenger-connection-bot","Install the Sales Navigator Messenger Connection bot",[1570,20568,16258,20569,16262],{},[1681,20570,20571],{},"Install Chrome Extension",[1570,20573,1714,20574,1696],{},[1681,20575,20576],{},"Start",[1570,20578,1720],{},[1562,20580,20582],{"id":20581},"configure-your-sales-navigator-messenger-connection-steps","Configure your Sales Navigator Messenger Connection steps",[1729,20584,20585,20679],{},[1577,20586,20587,20605],{},[1580,20588,20589,1738,20591,20593],{},[1681,20590,1737],{},[1740,20592,14923],{},[1577,20594,20595,20600],{},[1580,20596,20597,20599],{},[1740,20598,5537],{},": Paste your \"Saved list of leads\" URL.",[1580,20601,20602,20604],{},[1740,20603,1809],{},": Set how many leads to connect and message.",[1580,20606,20607,1738,20609,20611],{},[1681,20608,1761],{},[1740,20610,667],{},[1577,20612,20613,20621,20629,20637,20644,20652,20665,20672],{},[1580,20614,20615,1738,20617,20620],{},[1681,20616,1770],{},[1740,20618,20619],{},"Go to page^",": Navigates to each lead’s profile.",[1580,20622,20623,1738,20625,20628],{},[1681,20624,1793],{},[1740,20626,20627],{},"Split name into columns^",": Extracts first name.",[1580,20630,20631,1738,20633,20636],{},[1681,20632,1818],{},[1740,20634,20635],{},"Click Element^",": Clicks menu button.",[1580,20638,20639,1738,20641,20643],{},[1681,20640,1860],{},[1740,20642,20635],{},": Clicks \"Connect\" button.",[1580,20645,20646,1738,20648,20651],{},[1681,20647,1888],{},[1740,20649,20650],{},"Wait^",": Pauses before next step.",[1580,20653,20654,1738,20656,20658],{},[1681,20655,1925],{},[1740,20657,8028],{},[1577,20659,20660],{},[1580,20661,20662,20664],{},[1740,20663,2587],{},": Enter the message to send.",[1580,20666,20667,1738,20669,20671],{},[1681,20668,2836],{},[1740,20670,20635],{},": Clicks \"Send invitation\" button.",[1580,20673,20674,1738,20676,20678],{},[1681,20675,14487],{},[1740,20677,20650],{},": Waits for the request to be sent.",[1570,20680,2617],{},[1562,20682,20684],{"id":20683},"run-your-sales-navigator-messenger-connection-bot","Run your Sales Navigator Messenger Connection bot",[1570,20686,20687,20688,20691],{},"To test the Sales Navigator Messenger Connection bot, disable ",[1740,20689,20690],{},"Step 2.8: Press Key(s)"," to prevent sending messages.",[1562,20693,1398],{"id":1975},[1570,20695,2642,20696,1696],{},[1596,20697,2627],{"href":638},[1729,20699,20700],{},[1577,20701,20702,20711,20727,20738,20751,20765,20778,20789,20796],{},[1580,20703,20704,20706,20708,20709,2862],{},[1681,20705,11946],{},[1989,20707],{},"\nEnsure you have set filters in Apollo, then copy the full filtered search URL into the ",[1740,20710,1043],{},[1580,20712,20713,20716,20718,20719,20721,20722,11966,20724,1696],{},[1681,20714,20715],{},"Select button not working?",[1989,20717],{},"\nIn the ",[1740,20720,5254],{}," step, use the custom selector ",[1740,20723,11965],{},[1596,20725,20726],{"href":1383},"Learn more",[1580,20728,20729,20732,20734,20735,20737],{},[1681,20730,20731],{},"'Select this page' not clicked?",[1989,20733],{},"\nUse the ",[1740,20736,11983],{}," option in the selector tool to target \"Select this page\".",[1580,20739,20740,20743,20745,20746,20748,20749,1696],{},[1681,20741,20742],{},"Save People button not working?",[1989,20744],{},"\nReselect the 'Save' button in the ",[1740,20747,5254],{}," step or try using ",[1740,20750,11983],{},[1580,20752,20753,20755,20757,20758,20760,20761,11966,20763,1696],{},[1681,20754,12002],{},[1989,20756],{},"\nUse this custom selector in the ",[1740,20759,5254],{}," step: ",[1740,20762,12011],{},[1596,20764,20726],{"href":1391},[1580,20766,20767,20770,20772,20773,20775,20776,2862],{},[1681,20768,20769],{},"Save keystroke not working?",[1989,20771],{},"\nRe-record the ",[1740,20774,12025],{}," keystroke in the ",[1740,20777,6955],{},[1580,20779,20780,20783,20785,20786,20788],{},[1681,20781,20782],{},"Save happens too fast?",[1989,20784],{},"\nIncrease the wait time in the ",[1740,20787,349],{}," step to ensure save completes.",[1580,20790,20791,20793,20795],{},[1681,20792,12042],{},[1989,20794],{},"\nReselect the \"Next\" button at the bottom of the table.",[1580,20797,20798,20801,20803,20804,20806,20807,1696],{},[1681,20799,20800],{},"Jump goes to the wrong step?",[1989,20802],{},"\nSet the ",[1740,20805,1070],{}," to return to ",[1740,20808,2542],{},[1570,20810,2127,20811],{},[1596,20812,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":20814},[20815,20816,20817,20818,20819],{"id":16247,"depth":1644,"text":16248},{"id":20565,"depth":1644,"text":20566},{"id":20581,"depth":1644,"text":20582},{"id":20683,"depth":1644,"text":20684},{"id":1975,"depth":1644,"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":3158,"level":2149,"video":20823,"templateId":4192,"type":2152,"format":2153,"intent_type":2682,"intent":2683,"tags":20824,"platfrom":20826},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FOK6te1y9biM",[13108,20825,2686,2687],"connect",[16521,20827],"Sale Navigator","\u002Fguides\u002Fsales-navigator-connect",{"title":20538,"description":20821},"guides\u002Fsales-navigator-connect","mgHNdbRiUVSON9pSGTXlf-OscbCyDHS8q0WoGSdy_0I",{"id":20833,"title":20834,"body":20835,"date":21132,"description":21133,"extension":1653,"meta":21134,"navigation":1657,"order":1651,"path":21140,"seo":21141,"stem":21142,"__hash__":21143},"guides\u002Fguides\u002Fscrape-amazon.md","How to Scrape Amazon for Product Data (Fast and Easy)",{"type":1555,"value":20836,"toc":21124},[20837,20839,20842,20844,20846,20855,20859,20866,20870,20872,20876,21010,21014,21016,21018,21022,21024,21026,21102],[1567,20838],{},[1570,20840,20841],{},"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,20843],{},[1562,20845,1676],{"id":1675},[1570,20847,1679,20848,20850,20851,20854],{},[1681,20849,1683],{},", presuming you already have an account. Name your sheet something like ",[1681,20852,20853],{},"\"Amazon Scraper\""," and set up a tab called 'Amazon product links\"**. Add another tab called 'Data'.",[1562,20856,20858],{"id":20857},"install-the-amazon-scraper","Install the Amazon Scraper",[1570,20860,20861,20862,1707,20864,1711],{},"To install this Amazon scraper click ",[1681,20863,1706],{},[1681,20865,1710],{},[1570,20867,1714,20868,1696],{},[1681,20869,1717],{},[1570,20871,1720],{},[1562,20873,20875],{"id":20874},"configure-your-amazon-scraper-in-minutes","Configure your Amazon scraper in minutes",[1729,20877,20878],{},[1577,20879,20880,20898],{},[1580,20881,20882,1738,20884,20886],{},[1681,20883,1994],{},[1740,20885,1742],{},[1577,20887,20888,20892],{},[1580,20889,20890,1750],{},[1740,20891,1749],{},[1580,20893,20894,7518,20896,1696],{},[1740,20895,1755],{},[1740,20897,7521],{},[1580,20899,20900,1738,20902,20904],{},[1681,20901,2542],{},[1740,20903,667],{},[1577,20905,20906,20922,20933,20954,20982],{},[1580,20907,20908,1738,20910,20912],{},[1681,20909,2551],{},[1740,20911,1043],{},[1577,20913,20914],{},[1580,20915,20916,1780,20918,1784,20920,7544],{},[1740,20917,1779],{},[1740,20919,1783],{},[1740,20921,1787],{},[1580,20923,20924,1738,20926,20928],{},[1681,20925,2569],{},[1740,20927,14969],{},[1577,20929,20930],{},[1580,20931,20932],{},"No change required.",[1580,20934,20935,1738,20937,20939],{},[1681,20936,2577],{},[1740,20938,1796],{},[1577,20940,20941,20949],{},[1580,20942,20943,3625,20945,20948],{},[1740,20944,1803],{},[1596,20946,20947],{"href":1387},"Point and click"," to select the data you wish to scrape.",[1580,20950,20951,20953],{},[1740,20952,1809],{},": Set to match the number of columns of data you selected to scrape.",[1580,20955,20956,1738,20958,20960],{},[1681,20957,2593],{},[1740,20959,4924],{},[1577,20961,20962,20966,20970,20976],{},[1580,20963,20964,1750],{},[1740,20965,1749],{},[1580,20967,20968,1902],{},[1740,20969,1755],{},[1580,20971,20972,1908,20974,1696],{},[1740,20973,1907],{},[1740,20975,1845],{},[1580,20977,20978,1810,20980,1696],{},[1740,20979,1916],{},[1740,20981,7621],{},[1580,20983,20984,1738,20986,20988],{},[1681,20985,2601],{},[1740,20987,1928],{},[1577,20989,20990,20994,20998,21004],{},[1580,20991,20992,1750],{},[1740,20993,1749],{},[1580,20995,20996,1939],{},[1740,20997,1755],{},[1580,20999,21000,1810,21002,1696],{},[1740,21001,1944],{},[1740,21003,1813],{},[1580,21005,21006,1810,21008,1696],{},[1740,21007,1951],{},[1740,21009,1813],{},[1562,21011,21013],{"id":21012},"run-your-amazon-scraper","Run your Amazon scraper",[1570,21015,1960],{},[1562,21017,1964],{"id":1963},[1570,21019,1967,21020,1972],{},[1596,21021,1971],{"href":1970},[1562,21023,1398],{"id":1975},[1570,21025,1978],{},[1729,21027,21028],{},[1577,21029,21030,21045,21057,21070,21081,21094],{},[1580,21031,21032,21034,1991,21036,1995,21039,21041,21042,21044],{},[1681,21033,1987],{},[1989,21035],{},[1740,21037,21038],{},"Step 1.0 – Read data from a Google Sheet",[1740,21040,1998],{},". For example, ",[1740,21043,3353],{}," will scrape 100 rows.",[1580,21046,21047,21049,1991,21051,21054,21055,1696],{},[1681,21048,2008],{},[1989,21050],{},[1740,21052,21053],{},"Step 2.3 – Get data from bot's current page",", try reselecting or using ",[1596,21056,9093],{"href":1383},[1580,21058,21059,21062,2037,21064,2041,21066,2045,21068,1696],{},[1681,21060,21061],{},"Slow running scraper?",[1989,21063],{},[1740,21065,2040],{},[1740,21067,2044],{},[1740,21069,1813],{},[1580,21071,21072,21075,21077,21078,21080],{},[1681,21073,21074],{},"Want to speed the scraper up?",[1989,21076],{},"\nSet ",[1740,21079,1809],{}," to match the number of columns you selected to scrape.",[1580,21082,21083,21085,1991,21087,2088,21090,2110,21092,1696],{},[1681,21084,2103],{},[1989,21086],{},[1740,21088,21089],{},"Step 2.4 – Write Data to a Google Sheet",[1740,21091,2109],{},[1740,21093,1845],{},[1580,21095,21096,21098,2120,21100,2124],{},[1681,21097,2117],{},[1989,21099],{},[1740,21101,2123],{},[1570,21103,2127,21104,21106,21107,4912,21111,21115,21116,21119,21120],{},[1596,21105,2130],{"href":82},"\nLooking to ",[1596,21108,21110],{"href":21109},"\u002Fblog\u002Fscrape-amazon-asins","scrape ASINs",[1596,21112,21114],{"href":21113},"\u002Fblog\u002Famazon-posts","automate Amazon posts"," follow these ",[1596,21117,10504],{"href":21118},"\u002Fblog",". Read this link If you want to ",[1596,21121,21123],{"href":21122},"\u002Fblog\u002Fhow-to-scrape-product-details-from-amazon-books","scrape Amazon books.",{"title":1640,"searchDepth":1641,"depth":1641,"links":21125},[21126,21127,21128,21129,21130,21131],{"id":1675,"depth":1644,"text":1676},{"id":20857,"depth":1644,"text":20858},{"id":20874,"depth":1644,"text":20875},{"id":21012,"depth":1644,"text":21013},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":9122,"level":2149,"video":21135,"templateId":6374,"type":2152,"format":2153,"intent_type":2682,"intent":5637,"tags":21136,"platfrom":21138},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FqDFksZ4GLG0",[2158,21137],"google sheet",[21139],"Amazon","\u002Fguides\u002Fscrape-amazon",{"title":20834,"description":21133},"guides\u002Fscrape-amazon","VdVhD1jorL94z-t9X2ZmOBybBKbpeflNOxF6cesCxIo",{"id":21145,"title":21146,"body":21147,"date":1651,"description":21408,"extension":1653,"meta":21409,"navigation":1657,"order":1651,"path":21412,"seo":21413,"stem":21414,"__hash__":21415},"guides\u002Fguides\u002Fscrape-html-extract-data-with-ai.md","How to extract data from HTML with an AI",{"type":1555,"value":21148,"toc":21402},[21149,21151,21165,21167,21173,21175,21178,21209,21213,21392,21394,21396],[1567,21150],{},[1570,21152,21153,21154,21156,21157,21160,21161,21164],{},"Learn how simple it is to create a web scraper that loops through URLs in a Google Sheets, scrapes the HTML, and then uses ",[1596,21155,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 ",[1596,21158,21159],{"href":7750},"ChatGPT web scraper template."," Visit these pages to learn more about getting started with ",[1596,21162,21163],{"href":619},"extracting data"," and using our [builder.](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder A ChatGPT subscription is required to run this bot.",[1562,21166,8731],{"id":8730},[1570,21168,8736,21169,8740,21171,12834],{},[1681,21170,8739],{},[1681,21172,8743],{},[1562,21174,8683],{"id":8682},[1570,21176,21177],{},"Separate your URLs row by row in the same column.",[8690,21179,21180,21188],{},[8693,21181,21182],{},[8696,21183,21184,21186],{},[8699,21185,8701],{},[8699,21187,8704],{},[8706,21189,21190,21197,21203],{},[8696,21191,21192,21195],{},[8711,21193,21194],{},"Insert your URLs like this",[8711,21196,13467],{},[8696,21198,21199,21201],{},[8711,21200,21194],{},[8711,21202,13467],{},[8696,21204,21205,21207],{},[8711,21206,21194],{},[8711,21208,13467],{},[1562,21210,21212],{"id":21211},"create-your-bot","Create your bot",[1729,21214,21215],{},[1577,21216,21217,21245,21263,21279,21304,21330,21363],{},[1580,21218,21219,1738,21221,21223],{},[1681,21220,1737],{},[1740,21222,1742],{},[1577,21224,21225,21229,21233,21239],{},[1580,21226,21227,1750],{},[1740,21228,1749],{},[1580,21230,21231,9563],{},[1740,21232,1755],{},[1580,21234,21235,1810,21237,1696],{},[1740,21236,8780],{},[1740,21238,8784],{},[1580,21240,21241,1810,21243,1696],{},[1740,21242,6877],{},[1740,21244,8792],{},[1580,21246,21247,1738,21249,21251],{},[1681,21248,1761],{},[1740,21250,667],{},[1577,21252,21253],{},[1580,21254,21255,1780,21258,21260,21261,1696],{},[1740,21256,21257],{},"Loop source",[1740,21259,2637],{},", then select ",[1740,21262,1787],{},[1580,21264,21265,1738,21267,21269],{},[1681,21266,1770],{},[1740,21268,1043],{},[1577,21270,21271],{},[1580,21272,21273,1780,21275,1784,21277,1696],{},[1740,21274,1779],{},[1740,21276,2637],{},[1740,21278,1787],{},[1580,21280,21281,1738,21283,21285],{},[1681,21282,1793],{},[1740,21284,1796],{},[1577,21286,21287,21292],{},[1580,21288,21289,21291],{},[1740,21290,1803],{},": Click and choose the outermost HTML element to scrape.",[1580,21293,21294,1810,21297,21300,21301,1696],{},[1740,21295,21296],{},"Data type",[1740,21298,21299],{},"\"Select HTML\"",". See how ",[1596,21302,21303],{"href":1387},"here",[1580,21305,21306,1738,21308,21310],{},[1681,21307,1818],{},[1740,21309,7570],{},[1577,21311,21312,21316,21322],{},[1580,21313,21314,1829],{},[1740,21315,1828],{},[1580,21317,21318,1871,21320,1696],{},[1740,21319,2109],{},[1740,21321,1845],{},[1580,21323,21324,21326,21327,1696],{},[1740,21325,1851],{},": Enter the fields you want to extract, e.g. ",[1740,21328,21329],{},"\"name, email, job title\"",[1580,21331,21332,1738,21334,21336],{},[1681,21333,1860],{},[1740,21335,4924],{},[1577,21337,21338,21343,21348,21357],{},[1580,21339,21340,21342],{},[1740,21341,1749],{},": Select your Google Sheet or paste the URL.",[1580,21344,21345,21347],{},[1740,21346,1755],{},": Choose a sheet tab or leave blank for the first tab.",[1580,21349,21350,1780,21352,5108,21354,1696],{},[1740,21351,2109],{},[1740,21353,2637],{},[1740,21355,21356],{},"scraped-link-data",[1580,21358,21359,1810,21361,1696],{},[1740,21360,16757],{},[1740,21362,7621],{},[1580,21364,21365,1738,21367,21369],{},[1681,21366,1888],{},[1740,21368,1928],{},[1577,21370,21371,21376,21380,21386],{},[1580,21372,21373,21375],{},[1740,21374,1749],{},": Select the same Google Sheet.",[1580,21377,21378,20181],{},[1740,21379,1755],{},[1580,21381,21382,1810,21384,1696],{},[1740,21383,13066],{},[1740,21385,1813],{},[1580,21387,21388,1810,21390,1696],{},[1740,21389,13074],{},[1740,21391,1813],{},[1562,21393,2430],{"id":2429},[1567,21395],{},[1570,21397,21398,21399,21401],{},"In just seven steps you can create a simple web scraper to extract data from any website with ",[1596,21400,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":1640,"searchDepth":1641,"depth":1641,"links":21403},[21404,21405,21406,21407],{"id":8730,"depth":1644,"text":8731},{"id":8682,"depth":1644,"text":8683},{"id":21211,"depth":1644,"text":21212},{"id":2429,"depth":1644,"text":2430},"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":1657,"type":2152,"format":2153,"intent_type":3384,"intent":2155,"tags":21410,"platfrom":21411},[2158,2157,1620],[3387,739],"\u002Fguides\u002Fscrape-html-extract-data-with-ai",{"title":21146,"description":21408},"guides\u002Fscrape-html-extract-data-with-ai","rj8l-FN_hxQKJ2B_uZy_AxnJvFoaoTbJpMTF8Tb2THE",{"id":21417,"title":21418,"body":21419,"date":2676,"description":21674,"extension":1653,"meta":21675,"navigation":1657,"order":1651,"path":21679,"seo":21680,"stem":21681,"__hash__":21682},"guides\u002Fguides\u002Fscrape-likes-from-instagram-posts.md","How to scrape users from likes on Instagram posts",{"type":1555,"value":21420,"toc":21666},[21421,21423,21426,21428,21430,21440,21444,21452,21456,21458,21462,21588,21592,21597,21599,21603,21605,21609,21659],[1567,21422],{},[1570,21424,21425],{},"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,21427],{},[1562,21429,2487],{"id":2486},[1570,21431,21432,21433,21435,21436,21439],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut  ",[1681,21434,1683],{},", presuming you already have an account. Name your sheet something like  ",[1681,21437,21438],{},"\"Instagram likes\"",", create two tabs links and data.",[1562,21441,21443],{"id":21442},"install-the-instagram-like-scraper","Install the Instagram like scraper",[1570,21445,21446,21447,21449,21450,1711],{},"To install this Insta scraper click  ",[1681,21448,1706],{},". If you’re a new user, you’ll have to click  ",[1681,21451,1710],{},[1570,21453,1714,21454,1696],{},[1681,21455,1717],{},[1570,21457,1720],{},[1562,21459,21461],{"id":21460},"configure-your-instagram-like-scraper-in-5-easy-steps","Configure your Instagram Like scraper in 5 easy steps",[1729,21463,21464],{},[1577,21465,21466,21483],{},[1580,21467,21468,1738,21470,21472],{},[1681,21469,1737],{},[1740,21471,1742],{},[1577,21473,21474,21478],{},[1580,21475,21476,1750],{},[1740,21477,1749],{},[1580,21479,21480,21482],{},[1740,21481,1755],{},": Choose the tab with the post links in it.",[1580,21484,21485,1738,21487,21489],{},[1681,21486,1761],{},[1740,21488,667],{},[1577,21490,21491,21508,21520,21531,21556,21572],{},[1580,21492,21493,1738,21495,21497],{},[1681,21494,1770],{},[1740,21496,14420],{},[1577,21498,21499],{},[1580,21500,21501,1780,21503,1784,21505,21507],{},[1740,21502,1779],{},[1740,21504,2637],{},[1740,21506,1874],{},", then choose the column with the post links.",[1580,21509,21510,1738,21512,21515],{},[1681,21511,1793],{},[1740,21513,21514],{},"Click element: Click on like",[1577,21516,21517],{},[1580,21518,21519],{},"Preconfigured.",[1580,21521,21522,1738,21524,21527],{},[1681,21523,1818],{},[1740,21525,21526],{},"Get data from bot's current page: Scrape likes",[1577,21528,21529],{},[1580,21530,21519],{},[1580,21532,21533,1738,21535,21538],{},[1681,21534,1860],{},[1740,21536,21537],{},"Append or merge data: Post link + likes",[1577,21539,21540,21548],{},[1580,21541,21542,1780,21544,14730,21546,1696],{},[1740,21543,1870],{},[1740,21545,2637],{},[1740,21547,1874],{},[1580,21549,21550,1780,21552,1784,21554,1696],{},[1740,21551,1880],{},[1740,21553,2637],{},[1740,21555,1845],{},[1580,21557,21558,1738,21560,21562],{},[1681,21559,1888],{},[1740,21561,4924],{},[1577,21563,21564,21568],{},[1580,21565,21566,1750],{},[1740,21567,1749],{},[1580,21569,21570,14405],{},[1740,21571,1755],{},[1580,21573,21574,1738,21576,21578],{},[1681,21575,1925],{},[1740,21577,1928],{},[1577,21579,21580,21584],{},[1580,21581,21582,1750],{},[1740,21583,1749],{},[1580,21585,21586,14405],{},[1740,21587,1755],{},[1562,21589,21591],{"id":21590},"run-your-instagram-like-scraper","Run your Instagram like scraper",[1570,21593,21594,21595,1696],{},"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 ",[1596,21596,2627],{"href":638},[1562,21598,1964],{"id":1963},[1570,21600,1967,21601,1972],{},[1596,21602,1971],{"href":1970},[1562,21604,1398],{"id":1975},[1570,21606,2642,21607,1696],{},[1596,21608,2627],{"href":638},[1729,21610,21611],{},[1577,21612,21613,21624,21647],{},[1580,21614,21615,21618,1991,21620,21623],{},[1681,21616,21617],{},"Like button not clicked?",[1989,21619],{},[1740,21621,21622],{},"Step 2.2 – Click element: Click on like",", reselect the like button on a post.",[1580,21625,21626,21629,1991,21631,21634,21635,21638,21639,21641,2094,21644,1696],{},[1681,21627,21628],{},"No results scraped?",[1989,21630],{},[1740,21632,21633],{},"Step 2.3 – Get data from bot's current page: Scrape likes",", check that the ",[1596,21636,9093],{"href":21637},"\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fcustom-css-selectors\u002F"," used are correct:",[1989,21640],{},[1740,21642,21643],{},"'[role=\"dialog\"] span div'",[1740,21645,21646],{},"'[role=\"dialog\"] [role=\"link\"]'",[1580,21648,21649,21651,1991,21653,3113,21655,2110,21657,1696],{},[1681,21650,2103],{},[1989,21652],{},[1740,21654,15088],{},[1740,21656,2109],{},[1740,21658,1911],{},[1570,21660,2127,21661,21663,21664],{},[1596,21662,2130],{"href":82},"\nIntrested in automating Instagram posting, learn more read this full in-depth guide on automating ",[1596,21665,14583],{"href":14582},{"title":1640,"searchDepth":1641,"depth":1641,"links":21667},[21668,21669,21670,21671,21672,21673],{"id":2486,"depth":1644,"text":2487},{"id":21442,"depth":1644,"text":21443},{"id":21460,"depth":1644,"text":21461},{"id":21590,"depth":1644,"text":21591},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":2679,"level":2149,"video":21676,"templateId":6319,"type":2152,"format":2153,"intent_type":13106,"intent":5637,"tags":21677,"platfrom":21678},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FYhChBarQcuo",[13108,15110,15111,2158],[13110],"\u002Fguides\u002Fscrape-likes-from-instagram-posts",{"title":21418,"description":21674},"guides\u002Fscrape-likes-from-instagram-posts","tjOPu4FmD472dfYRFDLBeOS_YGIRlrCE6eRQefPFQqQ",{"id":21684,"title":21685,"body":21686,"date":1651,"description":21778,"extension":1653,"meta":21779,"navigation":1657,"order":1651,"path":21783,"seo":21784,"stem":21785,"__hash__":21786},"guides\u002Fguides\u002Fscrape-links-export-to-csv.md","How to extract links and write to a CSV",{"type":1555,"value":21687,"toc":21774},[21688,21690,21697,21699,21701,21709,21767,21769,21771],[1567,21689],{},[1570,21691,21692,21693,21696],{},"Learn how to scrape links from a webpage into a ",[1596,21694,21695],{"href":1016},"CSV"," saved to your downloads folder by combing a few steps using our [builder.](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder",[1562,21698,8731],{"id":8730},[1567,21700],{},[1570,21702,8736,21703,21705,21706,12834],{},[1681,21704,8739],{}," and then select ",[1681,21707,21708],{},"\"Add first step\".",[1729,21710,21711],{},[1577,21712,21713,21745],{},[1580,21714,21715,1738,21717,21719],{},[1681,21716,1994],{},[1740,21718,14923],{},[1577,21720,21721,21726,21731,21740],{},[1580,21722,21723,21725],{},[1740,21724,5537],{},": Enter the URL of the page from which to scrape links.",[1580,21727,21728,21730],{},[1740,21729,1803],{},": Choose the links you wish to scrape.",[1580,21732,21733,21735,21736,21739],{},[1740,21734,17488],{}," (optional): Select the ",[1681,21737,21738],{},"\"Next\""," button for pagination if present.",[1580,21741,21742,21744],{},[1740,21743,14938],{},": Set the maximum number of links to scrape.",[1580,21746,21747,1738,21749,21752],{},[1681,21748,2542],{},[1740,21750,21751],{},"Export to CSV",[1577,21753,21754,21762],{},[1580,21755,21756,1780,21758,21260,21760,1696],{},[1740,21757,21751],{},[1681,21759,1841],{},[1681,21761,21356],{},[1580,21763,21764,21766],{},[1740,21765,3274],{},": Name your CSV file.",[1562,21768,2430],{"id":2429},[1567,21770],{},[1570,21772,21773],{},"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":1640,"searchDepth":1641,"depth":1641,"links":21775},[21776,21777],{"id":8730,"depth":1644,"text":8731},{"id":2429,"depth":1644,"text":2430},"Learn how to make a bot that will scrape links from a webpage then export them into a CSV.",{"pinned":1657,"type":2152,"format":1729,"intent_type":3384,"intent":5637,"tags":21780,"platfrom":21782},[2158,21781],"csv",[3387],"\u002Fguides\u002Fscrape-links-export-to-csv",{"title":21685,"description":21778},"guides\u002Fscrape-links-export-to-csv","1sTMACaO_dDCy4SEf_ZaM48BBE6A94X-Ji62cXEaPlU",{"id":21788,"title":21789,"body":21790,"date":2676,"description":21985,"extension":1653,"meta":21986,"navigation":1657,"order":1651,"path":17430,"seo":21990,"stem":21991,"__hash__":21992},"guides\u002Fguides\u002Fscrape-links-from-a-website.md","How to scrape links from a website into a Google Sheet",{"type":1555,"value":21791,"toc":21977},[21792,21794,21797,21799,21805,21807,21814,21818,21826,21831,21833,21837,21899,21903,21906,21908,21912,21914,21916,21973],[1567,21793],{},[1570,21795,21796],{},"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,21798],{},[1570,21800,21801,21802],{},"We recommend scraping links with one Axiom then scraping the pages with another ",[1596,21803,21804],{"href":16553},"see this template.",[1562,21806,1676],{"id":1675},[1570,21808,1679,21809,21811,21812,1696],{},[1681,21810,1683],{},", presuming you already have an account. Name your sheet something like 'Link Scraper’ and set up a tab called ",[1681,21813,1691],{},[1562,21815,21817],{"id":21816},"install-the-link-scraper","Install the link scraper",[1570,21819,21820,21821,21823,21824,1711],{},"To install this Web scraper template click  ",[1681,21822,1706],{},".  If you’re a new user, you’ll have to click  ",[1681,21825,1710],{},[1570,21827,21828,21829,1696],{},"Once installed, click  ",[1681,21830,1717],{},[1570,21832,1720],{},[1562,21834,21836],{"id":21835},"configure-your-link-scraper-in-a-minute","Configure your Link scraper in a minute",[1729,21838,21839],{},[1577,21840,21841,21871],{},[1580,21842,21843,1738,21845,21847],{},[1681,21844,1994],{},[1740,21846,14923],{},[1577,21848,21849,21854,21861,21866],{},[1580,21850,21851,21853],{},[1740,21852,5537],{},": Enter the URL of the page you want to scrape.",[1580,21855,21856,3625,21858,21860],{},[1740,21857,1803],{},[1596,21859,20947],{"href":1387}," to select the links you wish to scrape.",[1580,21862,21863,21865],{},[1740,21864,17488],{}," (if any): Select the \"Next\" button if the page is paginated.",[1580,21867,21868,21870],{},[1740,21869,1809],{},": Set the number of links you wish to scrape.",[1580,21872,21873,1738,21875,21877],{},[1681,21874,2542],{},[1740,21876,4924],{},[1577,21878,21879,21883,21887,21893],{},[1580,21880,21881,1750],{},[1740,21882,1749],{},[1580,21884,21885,1902],{},[1740,21886,1755],{},[1580,21888,21889,1908,21891,1696],{},[1740,21890,1907],{},[1740,21892,15065],{},[1580,21894,21895,1810,21897,1696],{},[1740,21896,16757],{},[1740,21898,7621],{},[1562,21900,21902],{"id":21901},"run-your-link-scraper","Run your link scraper",[1570,21904,21905],{},"We suggest running a test first, setting max-results to 10, and reviewing the data.",[1562,21907,1964],{"id":1963},[1570,21909,1967,21910,1972],{},[1596,21911,1971],{"href":1970},[1562,21913,1398],{"id":1975},[1570,21915,1978],{},[1729,21917,21918],{},[1577,21919,21920,21932,21944,21952,21965],{},[1580,21921,21922,21924,1991,21926,21929,21930,1696],{},[1681,21923,2008],{},[1989,21925],{},[1740,21927,21928],{},"Step 1.0 – Get data from bot's current page",", try re-selecting or use ",[1596,21931,9093],{"href":1383},[1580,21933,21934,21936,2037,21938,2041,21940,2045,21942,1696],{},[1681,21935,21061],{},[1989,21937],{},[1740,21939,2040],{},[1740,21941,2044],{},[1740,21943,18844],{},[1580,21945,21946,21948,21077,21950,21080],{},[1681,21947,21074],{},[1989,21949],{},[1740,21951,1809],{},[1580,21953,21954,21956,1991,21958,2088,21961,2110,21963,1696],{},[1681,21955,2103],{},[1989,21957],{},[1740,21959,21960],{},"Step 2.0 – Write Data to a Google Sheet",[1740,21962,2109],{},[1740,21964,15065],{},[1580,21966,21967,21969,2120,21971,2124],{},[1681,21968,2117],{},[1989,21970],{},[1740,21972,2123],{},[1570,21974,2127,21975],{},[1596,21976,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":21978},[21979,21980,21981,21982,21983,21984],{"id":1675,"depth":1644,"text":1676},{"id":21816,"depth":1644,"text":21817},{"id":21835,"depth":1644,"text":21836},{"id":21901,"depth":1644,"text":21902},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":3158,"level":2149,"video":21987,"templateId":6282,"type":2152,"format":2153,"intent_type":3384,"intent":5637,"tags":21988,"platfrom":21989},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FzUHHWz6Ycgk",[2158,16816,21137],[3387],{"title":21789,"description":21985},"guides\u002Fscrape-links-from-a-website","8HHW7YgcBmNnyHuxefIHcgELrxoYKr5LKyQLWNrVV8U",{"id":21994,"title":21995,"body":21996,"date":21132,"description":22260,"extension":1653,"meta":22261,"navigation":1657,"order":1651,"path":22266,"seo":22267,"stem":22268,"__hash__":22269},"guides\u002Fguides\u002Fscrape-spotify-webplayer.md","How to Scrape Spotify Discography: Step-by-Step",{"type":1555,"value":21997,"toc":22253},[21998,22000,22003,22005,22007,22015,22019,22024,22028,22030,22136,22140,22145,22147,22152,22154,22158,22249],[1567,21999],{},[1570,22001,22002],{},"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,22004],{},[1562,22006,2487],{"id":2486},[1570,22008,1679,22009,2718,22011,22014],{},[1681,22010,1683],{},[1681,22012,22013],{},"\"Spotify scraper\"",". Set up two tabs in Google Sheets: one for artist profile links and another for scraped data.",[1562,22016,22018],{"id":22017},"install-the-spotify-discography-scraper","Install the Spotify discography scraper",[1570,22020,22021,22022,1711],{},"To install this Spotify Discography Scraper click '**\"Install template'. If you’re a new user, you’ll have to click ",[1681,22023,1710],{},[1570,22025,1714,22026,1696],{},[1681,22027,1717],{},[1570,22029,1720],{},[1729,22031,22032,22134],{},[1577,22033,22034,22051],{},[1580,22035,22036,1738,22038,22040],{},[1681,22037,1737],{},[1740,22039,1742],{},[1577,22041,22042,22046],{},[1580,22043,22044,1750],{},[1740,22045,1749],{},[1580,22047,22048,22050],{},[1740,22049,1755],{},": Choose the tab with the artist profile links.",[1580,22052,22053,1738,22055,22057],{},[1681,22054,1761],{},[1740,22056,667],{},[1577,22058,22059,22081,22086,22117],{},[1580,22060,22061,1738,22063,22066],{},[1681,22062,1770],{},[1740,22064,22065],{},"Go to page: Artist page",[1577,22067,22068],{},[1580,22069,22070,1780,22072,1784,22074,22076,22077,22080],{},[1740,22071,1779],{},[1740,22073,1841],{},[1740,22075,1874],{},", then append ",[1740,22078,22079],{},"\u002Fdiscography\u002Fall"," after the token.",[1580,22082,22083,11878],{},[1681,22084,22085],{},"2.2 – 2.3",[1580,22087,22088,1738,22090,22093],{},[1681,22089,1860],{},[1740,22091,22092],{},"Loop through data: Album links",[1577,22094,22095,22100],{},[1580,22096,22097,11878],{},[1681,22098,22099],{},"2.4.1 – 2.4.2",[1580,22101,22102,1738,22105,22107],{},[1681,22103,22104],{},"2.4.3",[1740,22106,4924],{},[1577,22108,22109],{},[1580,22110,22111,22113,22114,1696],{},[1740,22112,1907],{},": Ensure this is set to ",[1740,22115,22116],{},"[scraped-data]",[1580,22118,22119,1738,22121,22123],{},[1681,22120,1888],{},[1740,22122,1928],{},[1577,22124,22125,22129],{},[1580,22126,22127,1750],{},[1740,22128,1749],{},[1580,22130,22131,22133],{},[1740,22132,1755],{},": Choose the tab with artist links.",[1570,22135,2617],{},[1562,22137,22139],{"id":22138},"run-your-spotify-discography-scraper","Run your Spotify discography scraper",[1570,22141,22142,22143,1696],{},"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 ",[1596,22144,2627],{"href":638},[1562,22146,1964],{"id":1963},[1570,22148,1967,22149,22151],{},[1596,22150,1971],{"href":1970},", 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.",[1562,22153,1398],{"id":1975},[1570,22155,2642,22156,1696],{},[1596,22157,2627],{"href":638},[1729,22159,22160],{},[1577,22161,22162,22179,22190,22200,22217,22228,22239],{},[1580,22163,22164,22167,1991,22169,22172,22173,22175,22176,22178],{},[1681,22165,22166],{},"Artist page not loading?",[1989,22168],{},[1740,22170,22171],{},"Step 2.1 – Go to page: Artist page",", check that the URL ends with ",[1740,22174,22079],{}," after the ",[1740,22177,1874],{}," token.",[1580,22180,22181,22184,1991,22186,22189],{},[1681,22182,22183],{},"Display not being changed to grid format?",[1989,22185],{},[1740,22187,22188],{},"Step 2.2 – Click element: Grid layout",", reselect the grid icon from the artist page.",[1580,22191,22192,22194,1991,22196,22199],{},[1681,22193,9087],{},[1989,22195],{},[1740,22197,22198],{},"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.",[1580,22201,22202,22205,1991,22207,22210,22211,22213,22214,1696],{},[1681,22203,22204],{},"Album links not loading?",[1989,22206],{},[1740,22208,22209],{},"Step 2.4.1 – Go to page: Album",", confirm that ",[1740,22212,1779],{}," is set with ",[1740,22215,22216],{},"[link-data?*&0]",[1580,22218,22219,22222,1991,22224,22227],{},[1681,22220,22221],{},"No elements found?",[1989,22223],{},[1740,22225,22226],{},"Step 2.4.2 – Get data from bot's current page: Scrape Album",", reselect data from within an album page.",[1580,22229,22230,22233,1991,22235,22238],{},[1681,22231,22232],{},"Scraped data not writing?",[1989,22234],{},[1740,22236,22237],{},"Step 2.4.3 – Write data to a Google Sheet",", check that the correct sheet and tab are selected.",[1580,22240,22241,22244,1991,22246,22248],{},[1681,22242,22243],{},"Bot scrapes same artist every loop?",[1989,22245],{},[1740,22247,11656],{},", confirm the correct sheet tab (with artist links) is selected.",[1570,22250,2127,22251],{},[1596,22252,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":22254},[22255,22256,22257,22258,22259],{"id":2486,"depth":1644,"text":2487},{"id":22017,"depth":1644,"text":22018},{"id":22138,"depth":1644,"text":22139},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":2679,"level":17711,"video":22262,"templateId":6379,"type":2152,"format":2153,"intent_type":2682,"intent":5637,"tags":22263,"platfrom":22264},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FRL55fL4HOGk",[2158,21137],[22265],"Spotify","\u002Fguides\u002Fscrape-spotify-webplayer",{"title":21995,"description":22260},"guides\u002Fscrape-spotify-webplayer","pb388OX_wCAK_EDtYlyA-m8N48rEE1eZLTplX_fmuUg",{"id":22271,"title":22272,"body":22273,"date":1651,"description":22652,"extension":1653,"meta":22653,"navigation":1657,"order":1651,"path":22657,"seo":22658,"stem":22659,"__hash__":22660},"guides\u002Fguides\u002Fslack.md","How to automate Slack with axiom.ai",{"type":1555,"value":22274,"toc":22641},[22275,22277,22285,22287,22289,22302,22306,22308,22311,22356,22360,22363,22404,22408,22412,22414,22417,22420,22462,22472,22484,22490,22492,22494,22501,22504,22506,22508,22511,22515,22517,22520,22578,22581,22630,22634,22636,22638],[1567,22276],{},[1570,22278,22279,22284],{},[1596,22280,22283],{"href":22281,"rel":22282},"https:\u002F\u002Fslack.com\u002Fintl\u002Fen-gb\u002Ffeatures\u002Fworkflow-automation",[3874],"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.",[1562,22286,2182],{"id":2181},[1567,22288],{},[1570,22290,22291,22292,22297,22298,22301],{},"To get started, you'll need to have a ",[1596,22293,22296],{"href":22294,"rel":22295},"https:\u002F\u002Fslack.com",[3874],"Slack"," account that has access to ",[1596,22299,22283],{"href":22281,"rel":22300},[3874],". You'll also need to have the axiom.ai extension installed and be logged in.",[1562,22303,22305],{"id":22304},"trigger-a-slack-workflow-with-an-axiomai-automation","Trigger a Slack workflow with an axiom.ai automation",[1567,22307],{},[1570,22309,22310],{},"Learn how to trigger a Slack workflow from an axiom.ai automation.",[1729,22312,22313],{},[2191,22314,22315,22321,22327,22333,22339,22345,22350],{},[1580,22316,22317,22320],{},[1681,22318,22319],{},"Create Slack workflow",": Head to the Slack app and open the Workflow Builder.",[1580,22322,22323,22326],{},[1681,22324,22325],{},"Create workflow",": Click \"+ New workflow\" to get started.",[1580,22328,22329,22332],{},[1681,22330,22331],{},"Start the workflow",": Click \"Choose an event\" to select a workflow trigger, select \"From a webhook\".",[1580,22334,22335,22338],{},[1681,22336,22337],{},"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.",[1580,22340,22341,22344],{},[1681,22342,22343],{},"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.",[1580,22346,22347,22349],{},[1681,22348,13860],{},": Click \"Finish up\" to save your workflow, follow their steps and then click \"Publish\" to publish your workflow.",[1580,22351,22352,22355],{},[1681,22353,22354],{},"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.",[2227,22357],{"src":22358,"alt":22359},"\u002Fdocs\u002Fguides\u002Ftrigger-slack-workflow-example.png","set up a slack workflow in slack",[1570,22361,22362],{},"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.",[1729,22364,22365],{},[1577,22366,22367],{},[1580,22368,22369,2246,22371,22373,22374],{},[1740,22370,9311],{},[1596,22372,9311],{"href":1194}," step to your automation.\n",[1577,22375,22376,22385],{},[1580,22377,22378,22380,22381,22384],{},[1740,22379,2212],{},": Paste the ",[1681,22382,22383],{},"\"Web request URL\""," you copied from Slack.",[1580,22386,22387,22389,22390],{},[1740,22388,17959],{},": Match the format shown in your Slack workflow.\n",[1577,22391,22392,22398],{},[1580,22393,22394,22395,1696],{},"To check the structure, open your workflow and click on ",[1681,22396,22397],{},"\"Starts with a webhook\"",[1580,22399,7816,22400,22403],{},[1681,22401,22402],{},"\"Insert Data\""," option in Axiom to add tokens from your automation into the payload.",[2227,22405],{"src":22406,"alt":22407},"\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",[1611,22409,22411],{"id":22410},"triggering-a-slack-workflow-with-run-notifications","Triggering a Slack Workflow with Run Notifications",[1567,22413],{},[1570,22415,22416],{},"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.",[1570,22418,22419],{},"Then, head into your axiom.ai automation and follow the steps below:",[1729,22421,22422],{},[2191,22423,22424,22430,22439,22445,22454],{},[1580,22425,22426,22429],{},[1681,22427,22428],{},"Open your automation",": Open the Axiom automation you want to configure.",[1580,22431,22432,22435,22436,1696],{},[1681,22433,22434],{},"Go to settings",": Navigate to ",[1681,22437,22438],{},"Settings → Set up notifications",[1580,22440,22441,22444],{},[1681,22442,22443],{},"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.",[1580,22446,22447,22450,22451,1696],{},[1681,22448,22449],{},"Enable webhook notifications",": Turn on ",[1681,22452,22453],{},"Notify by webhook",[1580,22455,22456,22380,22459,22461],{},[1681,22457,22458],{},"Enter webhook URL",[1681,22460,22354],{}," from the Slack workflow setup.",[1570,22463,22464,22466,22467,22469,22470,1696],{},[2441,22465,16546],{}," Using the ",[1596,22468,9806],{"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 ",[1596,22471,4933],{"href":1487},[1570,22473,22474,22475,22477,22478,22483],{},"To pass custom data to your Slack Workflow, we would still recommend using the ",[1596,22476,9311],{"href":1194}," step method described in the section above. These can be used together but we recommend referring to Slack's ",[1596,22479,22482],{"href":22480,"rel":22481},"https:\u002F\u002Fapi.slack.com\u002Fapis\u002Frate-limits",[3874],"Rate Limit"," documentation for their API rate limits.",[1570,22485,22486,22487,13823],{},"To learn more about Run Notifications, see the ",[1596,22488,22489],{"href":875},"Run Notifications",[1562,22491,2410],{"id":2409},[1567,22493],{},[1570,22495,22496,22497,22500],{},"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. ",[1596,22498,22499],{"href":82},"Contact us"," if you are unsure of the errors that you are experiencing.",[1570,22502,22503],{},"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.",[1562,22505,8324],{"id":8323},[1567,22507],{},[1570,22509,22510],{},"Let's dive into some example use cases.",[1611,22512,22514],{"id":22513},"automate-the-creation-of-a-daily-spreadsheet","Automate the creation of a daily spreadsheet",[1567,22516],{},[1570,22518,22519],{},"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:",[1729,22521,22522],{},[2191,22523,22524,22530,22536,22542,22548,22554,22560,22566,22572],{},[1580,22525,22526,22529],{},[1681,22527,22528],{},"Create Slack workflow:"," Head to the Slack app and open the Workflow Builder.",[1580,22531,22532,22535],{},[1681,22533,22534],{},"Create workflow:"," Click \"+ New workflow\" to get started.",[1580,22537,22538,22541],{},[1681,22539,22540],{},"Start the workflow:"," Click \"Choose an event\" to select a workflow trigger, select \"From a webhook\".",[1580,22543,22544,22547],{},[1681,22545,22546],{},"Variables:"," To set up variables, click \"Set up variables\" - add two \"test\" variables, one called \"date\" and another called \"url\".",[1580,22549,22550,22553],{},[1681,22551,22552],{},"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.",[1580,22555,22556,22559],{},[1681,22557,22558],{},"Construct message:"," Create a message you'd like to send to the team, use the \"{} Insert a variable\" button to insert variables.",[1580,22561,22562,22565],{},[1681,22563,22564],{},"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.",[1580,22567,22568,22571],{},[1681,22569,22570],{},"Save:"," Click \"Finish up\" to save your workflow, follow their steps and then click \"Publish\" to publish your workflow.",[1580,22573,22574,22577],{},[1681,22575,22576],{},"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.",[1570,22579,22580],{},"Now, open your axiom.ai extension and follow the steps below:",[1729,22582,22583],{},[2191,22584,22585,22591,22600,22609,22618,22624],{},[1580,22586,22587,22590],{},[1681,22588,22589],{},"Create a new automation:"," Open the extension and click \"+ New Automation\" to get started.",[1580,22592,22593,22596,22597,22599],{},[1681,22594,22595],{},"Get date:"," To get the current date use the ",[1596,22598,9149],{"href":968}," step. Select the format from in the step.",[1580,22601,22602,22605,22606,22608],{},[1681,22603,22604],{},"Create Google Sheet:"," Use the ",[1596,22607,10972],{"href":952}," step to create a new spreadsheet, use the output from the \"Date and time\" step to construct your \"Sheet name\".",[1580,22610,22611,22614,22615,22617],{},[1681,22612,22613],{},"Trigger webhook:"," Add a ",[1596,22616,9311],{"href":1194}," step to your automation, add the \"Web request URL\" from Slack to the \"Endpoint\" input.",[1580,22619,22620,22623],{},[1681,22621,22622],{},"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.",[1580,22625,22626,22629],{},[1681,22627,22628],{},"Schedule:"," If your plan supports it, navigate to \"Settings\", then \"Schedule\" to set up a schedule to run daily, or more frequently.",[2227,22631],{"src":22632,"alt":22633},"\u002Fdocs\u002Fguides\u002Ftrigger-slack-workflow-example-gsheets.png","axiom.ai builder showing automation to automatically create new google sheet",[1562,22635,2430],{"id":2429},[1567,22637],{},[1570,22639,22640],{},"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":1640,"searchDepth":1641,"depth":1641,"links":22642},[22643,22644,22647,22648,22651],{"id":2181,"depth":1644,"text":2182},{"id":22304,"depth":1644,"text":22305,"children":22645},[22646],{"id":22410,"depth":1641,"text":22411},{"id":2409,"depth":1644,"text":2410},{"id":8323,"depth":1644,"text":8324,"children":22649},[22650],{"id":22513,"depth":1641,"text":22514},{"id":2429,"depth":1644,"text":2430},"Learn how to trigger a Slack Workflow using an axiom.ai automation to send messages or automatically perform tasks within your automations",{"type":2152,"format":2153,"intent_type":2154,"intent":2461,"tags":22654,"platfrom":22656},[2463,2464,22655],"integration",[22296],"\u002Fguides\u002Fslack",{"title":22272,"description":22652},"guides\u002Fslack","x5--DXeHbXDxGgORit0jXg9IGbMabiuQAQbFmpBiT6s",{"id":22662,"title":22663,"body":22664,"date":1651,"description":23939,"extension":1653,"meta":23940,"navigation":1657,"order":1651,"path":23944,"seo":23945,"stem":23946,"__hash__":23947},"guides\u002Fguides\u002Fsupabase.md","How to automate Supabase with axiom.ai",{"type":1555,"value":22665,"toc":23929},[22666,22668,22676,22678,22680,22683,22719,22722,22726,22728,22731,22735,22737,22740,22746,22805,22808,22939,22946,23153,23160,23171,23177,23454,23459,23469,23473,23475,23480,23483,23517,23524,23540,23543,23734,23739,23842,23855,23859,23861,23866,23873,23876,23900,23903,23905,23907,23912,23914,23916,23918,23921,23923,23926],[1567,22667],{},[1570,22669,22670,22675],{},[1596,22671,22674],{"href":22672,"rel":22673},"https:\u002F\u002Fsupabase.com",[3874],"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.",[1562,22677,2182],{"id":2181},[1567,22679],{},[1570,22681,22682],{},"To get started, you will need to have the following steps completed:",[1729,22684,22685],{},[2191,22686,22687,22692,22702,22711],{},[1580,22688,22689],{},[1681,22690,22691],{},"Sign up to Supabase",[1580,22693,22694,3625,22697],{},[1681,22695,22696],{},"Create a database and a table",[1596,22698,22701],{"href":22699,"rel":22700},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdatabase\u002Ftables",[3874],"Supabase | Tables and Data",[1580,22703,22704,22707,22708],{},[1681,22705,22706],{},"Retrieve your project URL",": Go to ",[1681,22709,22710],{},"Project settings → API → Project URL",[1580,22712,22713,22707,22716],{},[1681,22714,22715],{},"Retrieve your API key",[1681,22717,22718],{},"Project settings → API → Project API Keys",[1570,22720,22721],{},"Throughout this guide we will be using a \"Customers\" table, any code provided will need to be modified to your specific use case.",[1562,22723,22725],{"id":22724},"working-with-supabase-data-in-axiomai","Working with Supabase data in axiom.ai",[1567,22727],{},[1570,22729,22730],{},"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.",[1611,22732,22734],{"id":22733},"write-data-to-a-supabase-table","Write data to a Supabase table",[1567,22736],{},[1570,22738,22739],{},"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.",[1570,22741,22742,22743,22745],{},"To get started, add a ",[1596,22744,3928],{"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.",[2353,22747,22749],{"className":2390,"code":22748,"language":2392,"meta":1640,"style":1640},"\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",[1740,22750,22751,22756,22777,22791],{"__ignoreMap":1640},[2361,22752,22753],{"class":2363,"line":2364},[2361,22754,22755],{"class":4545},"\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",[2361,22757,22758,22760,22763,22765,22768,22770,22773,22775],{"class":2363,"line":1644},[2361,22759,3942],{"class":3616},[2361,22761,22762],{"class":3512}," ogData",[2361,22764,3948],{"class":3616},[2361,22766,22767],{"class":2402}," [google",[2361,22769,18786],{"class":3616},[2361,22771,22772],{"class":2402},"sheet",[2361,22774,18786],{"class":3616},[2361,22776,18789],{"class":2402},[2361,22778,22779,22781,22784,22786,22789],{"class":2363,"line":1641},[2361,22780,3942],{"class":3616},[2361,22782,22783],{"class":3512}," supabase_url",[2361,22785,3948],{"class":3616},[2361,22787,22788],{"class":2371}," \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>\"",[2361,22790,3954],{"class":2402},[2361,22792,22793,22795,22798,22800,22803],{"class":2363,"line":3525},[2361,22794,3942],{"class":3616},[2361,22796,22797],{"class":3512}," api_key",[2361,22799,3948],{"class":3616},[2361,22801,22802],{"class":2371}," \"\u003CAPI_KEY>\"",[2361,22804,3954],{"class":2402},[1570,22806,22807],{},"Next, we will add a helper function that ensures that your data is formatted in a way that Supabase expects:",[2353,22809,22811],{"className":2390,"code":22810,"language":2392,"meta":1640,"style":1640},"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",[1740,22812,22813,22832,22843,22875,22880,22920,22924,22928,22935],{"__ignoreMap":1640},[2361,22814,22815,22817,22820,22822,22824,22826,22828,22830],{"class":2363,"line":2364},[2361,22816,3942],{"class":3616},[2361,22818,22819],{"class":4003}," format",[2361,22821,3948],{"class":3616},[2361,22823,4151],{"class":2402},[2361,22825,3468],{"class":2367},[2361,22827,6641],{"class":2402},[2361,22829,4015],{"class":3616},[2361,22831,4018],{"class":2402},[2361,22833,22834,22836,22839,22841],{"class":2363,"line":1644},[2361,22835,18452],{"class":3616},[2361,22837,22838],{"class":3512}," formatted_data",[2361,22840,3948],{"class":3616},[2361,22842,6583],{"class":2402},[2361,22844,22845,22848,22850,22852,22854,22856,22858,22860,22862,22865,22867,22870,22873],{"class":2363,"line":1641},[2361,22846,22847],{"class":3616},"    for",[2361,22849,4151],{"class":2402},[2361,22851,6574],{"class":3616},[2361,22853,19568],{"class":2402},[2361,22855,6580],{"class":3616},[2361,22857,19573],{"class":3512},[2361,22859,19576],{"class":2402},[2361,22861,19579],{"class":3616},[2361,22863,22864],{"class":2402}," data.",[2361,22866,19585],{"class":3512},[2361,22868,22869],{"class":2402},"; i",[2361,22871,22872],{"class":3616},"++",[2361,22874,18441],{"class":2402},[2361,22876,22877],{"class":2363,"line":3525},[2361,22878,22879],{"class":4545},"        \u002F\u002F Follow the format and add your own column names, incrementing the value in the second [] for each new piece of data.\n",[2361,22881,22882,22885,22887,22890,22893,22896,22898,22901,22904,22906,22908,22910,22913,22915,22917],{"class":2363,"line":3531},[2361,22883,22884],{"class":2402},"        formatted_data.",[2361,22886,6653],{"class":4003},[2361,22888,22889],{"class":2402},"({",[2361,22891,22892],{"class":2371},"\"first_name\"",[2361,22894,22895],{"class":2402},": data[i][",[2361,22897,18844],{"class":3512},[2361,22899,22900],{"class":2402},"], ",[2361,22902,22903],{"class":2371},"\"last_name\"",[2361,22905,22895],{"class":2402},[2361,22907,1813],{"class":3512},[2361,22909,22900],{"class":2402},[2361,22911,22912],{"class":2371},"\"email\"",[2361,22914,22895],{"class":2402},[2361,22916,10467],{"class":3512},[2361,22918,22919],{"class":2402},"]});\n",[2361,22921,22922],{"class":2363,"line":3603},[2361,22923,4260],{"class":2402},[2361,22925,22926],{"class":2363,"line":3682},[2361,22927,5169],{"class":2402},[2361,22929,22930,22932],{"class":2363,"line":3688},[2361,22931,18826],{"class":3616},[2361,22933,22934],{"class":2402}," formatted_data;\n",[2361,22936,22937],{"class":2363,"line":3694},[2361,22938,4266],{"class":2402},[1570,22940,22941,22942,22945],{},"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 ",[1740,22943,22944],{},"result"," in later steps of your automation, you'll need to return this value.",[2353,22947,22949],{"className":2390,"code":22948,"language":2392,"meta":1640,"style":1640},"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",[1740,22950,22951,22968,22974,22989,22997,23001,23009,23025,23034,23038,23056,23060,23065,23075,23087,23093,23097,23101,23117,23125,23133,23145,23149],{"__ignoreMap":1640},[2361,22952,22953,22955,22958,22960,22962,22964,22966],{"class":2363,"line":2364},[2361,22954,3942],{"class":3616},[2361,22956,22957],{"class":4003}," sendToSupabase",[2361,22959,3948],{"class":3616},[2361,22961,4009],{"class":3616},[2361,22963,4012],{"class":2402},[2361,22965,4015],{"class":3616},[2361,22967,4018],{"class":2402},[2361,22969,22970,22972],{"class":2363,"line":1644},[2361,22971,4023],{"class":3616},[2361,22973,4018],{"class":2402},[2361,22975,22976,22978,22980,22982,22984,22986],{"class":2363,"line":1641},[2361,22977,4030],{"class":3616},[2361,22979,3723],{"class":3512},[2361,22981,3948],{"class":3616},[2361,22983,4037],{"class":3616},[2361,22985,4040],{"class":4003},[2361,22987,22988],{"class":2402},"(supabase_url, {\n",[2361,22990,22991,22993,22995],{"class":2363,"line":3525},[2361,22992,4048],{"class":2402},[2361,22994,4051],{"class":2371},[2361,22996,4054],{"class":2402},[2361,22998,22999],{"class":2363,"line":3531},[2361,23000,4059],{"class":2402},[2361,23002,23003,23006],{"class":2363,"line":3603},[2361,23004,23005],{"class":2371},"                'apikey'",[2361,23007,23008],{"class":2402},": api_key,\n",[2361,23010,23011,23014,23016,23018,23021,23023],{"class":2363,"line":3682},[2361,23012,23013],{"class":2371},"              'Authorization'",[2361,23015,3625],{"class":2402},[2361,23017,18487],{"class":2371},[2361,23019,23020],{"class":2402},"api_key",[2361,23022,4075],{"class":2371},[2361,23024,4054],{"class":2402},[2361,23026,23027,23030,23032],{"class":2363,"line":3688},[2361,23028,23029],{"class":2371},"              'Content-Type'",[2361,23031,3625],{"class":2402},[2361,23033,18504],{"class":2371},[2361,23035,23036],{"class":2363,"line":3694},[2361,23037,4092],{"class":2402},[2361,23039,23040,23042,23044,23046,23048,23050,23053],{"class":2363,"line":3717},[2361,23041,4097],{"class":2402},[2361,23043,11201],{"class":3512},[2361,23045,1696],{"class":2402},[2361,23047,11206],{"class":4003},[2361,23049,4169],{"class":2402},[2361,23051,23052],{"class":4003},"format",[2361,23054,23055],{"class":2402},"(ogData))\n",[2361,23057,23058],{"class":2363,"line":3770},[2361,23059,4138],{"class":2402},[2361,23061,23062],{"class":2363,"line":3784},[2361,23063,23064],{"class":2402},"                               \n",[2361,23066,23067,23069,23071,23073],{"class":2363,"line":3160},[2361,23068,4148],{"class":3616},[2361,23070,4151],{"class":2402},[2361,23072,4154],{"class":3616},[2361,23074,4157],{"class":2402},[2361,23076,23077,23079,23081,23083,23085],{"class":2363,"line":3808},[2361,23078,4163],{"class":2402},[2361,23080,4166],{"class":4003},[2361,23082,4169],{"class":2402},[2361,23084,4172],{"class":2371},[2361,23086,4512],{"class":2402},[2361,23088,23089,23091],{"class":2363,"line":3817},[2361,23090,4181],{"class":3616},[2361,23092,3954],{"class":2402},[2361,23094,23095],{"class":2363,"line":4160},[2361,23096,4189],{"class":2402},[2361,23098,23099],{"class":2363,"line":4178},[2361,23100,4143],{"class":2402},[2361,23102,23103,23105,23107,23109,23111,23113,23115],{"class":2363,"line":4186},[2361,23104,4030],{"class":3616},[2361,23106,4202],{"class":3512},[2361,23108,3948],{"class":3616},[2361,23110,4037],{"class":3616},[2361,23112,4209],{"class":2402},[2361,23114,4212],{"class":4003},[2361,23116,4215],{"class":2402},[2361,23118,23119,23121,23123],{"class":2363,"line":4192},[2361,23120,4221],{"class":2402},[2361,23122,4224],{"class":4003},[2361,23124,4227],{"class":2402},[2361,23126,23127,23129,23131],{"class":2363,"line":4197},[2361,23128,4233],{"class":2402},[2361,23130,4236],{"class":3616},[2361,23132,4239],{"class":2402},[2361,23134,23135,23137,23139,23141,23143],{"class":2363,"line":4218},[2361,23136,4221],{"class":2402},[2361,23138,4166],{"class":4003},[2361,23140,4169],{"class":2402},[2361,23142,4251],{"class":2371},[2361,23144,4254],{"class":2402},[2361,23146,23147],{"class":2363,"line":4230},[2361,23148,4260],{"class":2402},[2361,23150,23151],{"class":2363,"line":4242},[2361,23152,4266],{"class":2402},[1570,23154,23155,23156,23159],{},"To use this as is, call the ",[1740,23157,23158],{},"sendToSupabase"," function at the end of your script.",[2353,23161,23163],{"className":2390,"code":23162,"language":2392,"meta":1640,"style":1640},"sendToSupabase();\n",[1740,23164,23165],{"__ignoreMap":1640},[2361,23166,23167,23169],{"class":2363,"line":2364},[2361,23168,23158],{"class":4003},[2361,23170,4215],{"class":2402},[1570,23172,23173,23174,23176],{},"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 ",[1740,23175,23158],{}," function:",[2353,23178,23180],{"className":2390,"code":23179,"language":2392,"meta":1640,"style":1640},"\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",[1740,23181,23182,23187,23199,23203,23219,23248,23255,23270,23279,23284,23291,23306,23315,23320,23347,23352,23356,23367,23380,23387,23391,23395,23411,23419,23429,23442,23446,23450],{"__ignoreMap":1640},[2361,23183,23184],{"class":2363,"line":2364},[2361,23185,23186],{"class":4545},"\u002F\u002F Change this to meet your requirements.\n",[2361,23188,23189,23191,23193,23195,23197],{"class":2363,"line":1644},[2361,23190,3942],{"class":3616},[2361,23192,19648],{"class":3512},[2361,23194,3948],{"class":3616},[2361,23196,19554],{"class":3512},[2361,23198,3954],{"class":2402},[2361,23200,23201],{"class":2363,"line":1641},[2361,23202,3528],{"emptyLinePlaceholder":1657},[2361,23204,23205,23207,23209,23211,23213,23215,23217],{"class":2363,"line":3525},[2361,23206,3942],{"class":3616},[2361,23208,22957],{"class":4003},[2361,23210,3948],{"class":3616},[2361,23212,4009],{"class":3616},[2361,23214,4012],{"class":2402},[2361,23216,4015],{"class":3616},[2361,23218,4018],{"class":2402},[2361,23220,23221,23223,23225,23227,23229,23231,23233,23235,23237,23240,23242,23244,23246],{"class":2363,"line":3531},[2361,23222,22847],{"class":3616},[2361,23224,4151],{"class":2402},[2361,23226,6574],{"class":3616},[2361,23228,19568],{"class":2402},[2361,23230,6580],{"class":3616},[2361,23232,19573],{"class":3512},[2361,23234,19576],{"class":2402},[2361,23236,19579],{"class":3616},[2361,23238,23239],{"class":2402}," ogData.",[2361,23241,19585],{"class":3512},[2361,23243,19576],{"class":2402},[2361,23245,19590],{"class":3616},[2361,23247,19593],{"class":2402},[2361,23249,23250,23253],{"class":2363,"line":3603},[2361,23251,23252],{"class":3616},"        try",[2361,23254,4018],{"class":2402},[2361,23256,23257,23260,23262,23264,23266,23268],{"class":2363,"line":3682},[2361,23258,23259],{"class":3616},"            const",[2361,23261,3723],{"class":3512},[2361,23263,3948],{"class":3616},[2361,23265,4037],{"class":3616},[2361,23267,4040],{"class":4003},[2361,23269,22988],{"class":2402},[2361,23271,23272,23275,23277],{"class":2363,"line":3688},[2361,23273,23274],{"class":2402},"                method: ",[2361,23276,4051],{"class":2371},[2361,23278,4054],{"class":2402},[2361,23280,23281],{"class":2363,"line":3694},[2361,23282,23283],{"class":2402},"                headers: {\n",[2361,23285,23286,23289],{"class":2363,"line":3717},[2361,23287,23288],{"class":2371},"                    'apikey'",[2361,23290,23008],{"class":2402},[2361,23292,23293,23296,23298,23300,23302,23304],{"class":2363,"line":3770},[2361,23294,23295],{"class":2371},"                    'Authorization'",[2361,23297,3625],{"class":2402},[2361,23299,18487],{"class":2371},[2361,23301,23020],{"class":2402},[2361,23303,4075],{"class":2371},[2361,23305,4054],{"class":2402},[2361,23307,23308,23311,23313],{"class":2363,"line":3784},[2361,23309,23310],{"class":2371},"                    'Content-Type'",[2361,23312,3625],{"class":2402},[2361,23314,18504],{"class":2371},[2361,23316,23317],{"class":2363,"line":3160},[2361,23318,23319],{"class":2402},"                },\n",[2361,23321,23322,23325,23327,23329,23331,23333,23335,23338,23340,23342,23344],{"class":2363,"line":3808},[2361,23323,23324],{"class":2402},"                body: ",[2361,23326,11201],{"class":3512},[2361,23328,1696],{"class":2402},[2361,23330,11206],{"class":4003},[2361,23332,4169],{"class":2402},[2361,23334,23052],{"class":4003},[2361,23336,23337],{"class":2402},"(ogData.",[2361,23339,19607],{"class":4003},[2361,23341,19610],{"class":2402},[2361,23343,10071],{"class":3616},[2361,23345,23346],{"class":2402}," batchSize)))\n",[2361,23348,23349],{"class":2363,"line":3817},[2361,23350,23351],{"class":2402},"            });\n",[2361,23353,23354],{"class":2363,"line":4160},[2361,23355,23064],{"class":2402},[2361,23357,23358,23361,23363,23365],{"class":2363,"line":4178},[2361,23359,23360],{"class":3616},"            if",[2361,23362,4151],{"class":2402},[2361,23364,4154],{"class":3616},[2361,23366,4157],{"class":2402},[2361,23368,23369,23372,23374,23376,23378],{"class":2363,"line":4186},[2361,23370,23371],{"class":2402},"                console.",[2361,23373,4166],{"class":4003},[2361,23375,4169],{"class":2402},[2361,23377,4172],{"class":2371},[2361,23379,4512],{"class":2402},[2361,23381,23382,23385],{"class":2363,"line":4192},[2361,23383,23384],{"class":3616},"                return",[2361,23386,3954],{"class":2402},[2361,23388,23389],{"class":2363,"line":4197},[2361,23390,4481],{"class":2402},[2361,23392,23393],{"class":2363,"line":4218},[2361,23394,4143],{"class":2402},[2361,23396,23397,23399,23401,23403,23405,23407,23409],{"class":2363,"line":4230},[2361,23398,23259],{"class":3616},[2361,23400,4202],{"class":3512},[2361,23402,3948],{"class":3616},[2361,23404,4037],{"class":3616},[2361,23406,4209],{"class":2402},[2361,23408,4212],{"class":4003},[2361,23410,4215],{"class":2402},[2361,23412,23413,23415,23417],{"class":2363,"line":4242},[2361,23414,4163],{"class":2402},[2361,23416,4224],{"class":4003},[2361,23418,4227],{"class":2402},[2361,23420,23421,23424,23426],{"class":2363,"line":4257},[2361,23422,23423],{"class":2402},"        } ",[2361,23425,4236],{"class":3616},[2361,23427,23428],{"class":2402}," (e) {\n",[2361,23430,23431,23433,23435,23437,23439],{"class":2363,"line":4263},[2361,23432,4163],{"class":2402},[2361,23434,4224],{"class":4003},[2361,23436,4169],{"class":2402},[2361,23438,4251],{"class":2371},[2361,23440,23441],{"class":2402},", e);\n",[2361,23443,23444],{"class":2363,"line":4269},[2361,23445,4189],{"class":2402},[2361,23447,23448],{"class":2363,"line":4274},[2361,23449,4260],{"class":2402},[2361,23451,23452],{"class":2363,"line":6268},[2361,23453,4266],{"class":2402},[1570,23455,23456,23457,23159],{},"To use this, call the ",[1740,23458,23158],{},[2353,23460,23461],{"className":2390,"code":23162,"language":2392,"meta":1640,"style":1640},[1740,23462,23463],{"__ignoreMap":1640},[2361,23464,23465,23467],{"class":2363,"line":2364},[2361,23466,23158],{"class":4003},[2361,23468,4215],{"class":2402},[1611,23470,23472],{"id":23471},"read-data-from-a-supabase-table","Read data from a Supabase table",[1567,23474],{},[1570,23476,23477,23478,16096],{},"Reading data from a Supabase table allows you to make use of this data within your axiom.ai automations. To get started, add a ",[1596,23479,3928],{"href":1226},[1570,23481,23482],{},"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.",[2353,23484,23486],{"className":2390,"code":23485,"language":2392,"meta":1640,"style":1640},"\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",[1740,23487,23488,23493,23505],{"__ignoreMap":1640},[2361,23489,23490],{"class":2363,"line":2364},[2361,23491,23492],{"class":4545},"\u002F\u002F Replace any item in \u003C> with your data.\n",[2361,23494,23495,23497,23499,23501,23503],{"class":2363,"line":1644},[2361,23496,3942],{"class":3616},[2361,23498,22783],{"class":3512},[2361,23500,3948],{"class":3616},[2361,23502,22788],{"class":2371},[2361,23504,3954],{"class":2402},[2361,23506,23507,23509,23511,23513,23515],{"class":2363,"line":1641},[2361,23508,3942],{"class":3616},[2361,23510,22797],{"class":3512},[2361,23512,3948],{"class":3616},[2361,23514,22802],{"class":2371},[2361,23516,3954],{"class":2402},[1570,23518,23519,23520,23523],{},"Your ",[1740,23521,23522],{},"supabase_url"," variable will need to be slightly modified, depending on what data you are looking to return, for example:",[1577,23525,23526,23529,23532],{},[1580,23527,23528],{},"Return all columns: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?select=*\"",[1580,23530,23531],{},"Return specific columns: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?select=some_column,other_column\"",[1580,23533,23534,23535,1696],{},"Filtered: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?id=eq.1\", ",[1596,23536,23539],{"href":23537,"rel":23538},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fjavascript\u002Fusing-filters",[3874],"learn more",[1570,23541,23542],{},"Next, we will want to retrieve the data from your Supabase database. You won't need to make any changes to this code:",[2353,23544,23546],{"className":2390,"code":23545,"language":2392,"meta":1640,"style":1640},"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",[1740,23547,23548,23565,23571,23585,23590,23597,23611,23615,23620,23624,23635,23647,23653,23658,23662,23678,23686,23695,23707,23711,23715,23719],{"__ignoreMap":1640},[2361,23549,23550,23552,23555,23557,23559,23561,23563],{"class":2363,"line":2364},[2361,23551,3942],{"class":3616},[2361,23553,23554],{"class":4003}," retrieveData",[2361,23556,3948],{"class":3616},[2361,23558,4009],{"class":3616},[2361,23560,4012],{"class":2402},[2361,23562,4015],{"class":3616},[2361,23564,4018],{"class":2402},[2361,23566,23567,23569],{"class":2363,"line":1644},[2361,23568,4023],{"class":3616},[2361,23570,4018],{"class":2402},[2361,23572,23573,23575,23577,23579,23581,23583],{"class":2363,"line":1641},[2361,23574,18545],{"class":3616},[2361,23576,3723],{"class":3512},[2361,23578,3948],{"class":3616},[2361,23580,4037],{"class":3616},[2361,23582,4040],{"class":4003},[2361,23584,22988],{"class":2402},[2361,23586,23587],{"class":2363,"line":3525},[2361,23588,23589],{"class":2402},"        headers: {\n",[2361,23591,23592,23595],{"class":2363,"line":3531},[2361,23593,23594],{"class":2371},"          'apikey'",[2361,23596,23008],{"class":2402},[2361,23598,23599,23602,23604,23606,23608],{"class":2363,"line":3603},[2361,23600,23601],{"class":2371},"          'Authorization'",[2361,23603,3625],{"class":2402},[2361,23605,18487],{"class":2371},[2361,23607,23020],{"class":2402},[2361,23609,23610],{"class":2371},"}`\n",[2361,23612,23613],{"class":2363,"line":3682},[2361,23614,4189],{"class":2402},[2361,23616,23617],{"class":2363,"line":3688},[2361,23618,23619],{"class":2402},"      });\n",[2361,23621,23622],{"class":2363,"line":3694},[2361,23623,4809],{"class":2402},[2361,23625,23626,23629,23631,23633],{"class":2363,"line":3717},[2361,23627,23628],{"class":3616},"      if",[2361,23630,4151],{"class":2402},[2361,23632,4154],{"class":3616},[2361,23634,4157],{"class":2402},[2361,23636,23637,23639,23641,23643,23645],{"class":2363,"line":3770},[2361,23638,4221],{"class":2402},[2361,23640,4166],{"class":4003},[2361,23642,4169],{"class":2402},[2361,23644,4251],{"class":2371},[2361,23646,6615],{"class":2402},[2361,23648,23649,23651],{"class":2363,"line":3784},[2361,23650,3773],{"class":3616},[2361,23652,3954],{"class":2402},[2361,23654,23655],{"class":2363,"line":3160},[2361,23656,23657],{"class":2402},"      }\n",[2361,23659,23660],{"class":2363,"line":3808},[2361,23661,4143],{"class":2402},[2361,23663,23664,23666,23668,23670,23672,23674,23676],{"class":2363,"line":3817},[2361,23665,18545],{"class":3616},[2361,23667,4202],{"class":3512},[2361,23669,3948],{"class":3616},[2361,23671,4037],{"class":3616},[2361,23673,4209],{"class":2402},[2361,23675,4212],{"class":4003},[2361,23677,4215],{"class":2402},[2361,23679,23680,23683],{"class":2363,"line":4160},[2361,23681,23682],{"class":3616},"      return",[2361,23684,23685],{"class":2402}," result;\n",[2361,23687,23688,23690,23692],{"class":2363,"line":4178},[2361,23689,4233],{"class":2402},[2361,23691,4236],{"class":3616},[2361,23693,23694],{"class":2402},"(e) {\n",[2361,23696,23697,23699,23701,23703,23705],{"class":2363,"line":4186},[2361,23698,18563],{"class":2402},[2361,23700,4166],{"class":4003},[2361,23702,4169],{"class":2402},[2361,23704,4251],{"class":2371},[2361,23706,23441],{"class":2402},[2361,23708,23709],{"class":2363,"line":4192},[2361,23710,4260],{"class":2402},[2361,23712,23713],{"class":2363,"line":4197},[2361,23714,4266],{"class":2402},[2361,23716,23717],{"class":2363,"line":4218},[2361,23718,3528],{"emptyLinePlaceholder":1657},[2361,23720,23721,23723,23726,23728,23730,23732],{"class":2363,"line":4230},[2361,23722,3942],{"class":3616},[2361,23724,23725],{"class":3512}," data",[2361,23727,3948],{"class":3616},[2361,23729,4037],{"class":3616},[2361,23731,23554],{"class":4003},[2361,23733,4215],{"class":2402},[1570,23735,6680,23736,23738],{},[1740,23737,3468],{}," 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:",[2353,23740,23742],{"className":2390,"code":23741,"language":2392,"meta":1640,"style":1640},"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",[1740,23743,23744,23758,23769,23797,23812,23816,23820,23826,23830,23834],{"__ignoreMap":1640},[2361,23745,23746,23748,23750,23752,23754,23756],{"class":2363,"line":2364},[2361,23747,3942],{"class":3616},[2361,23749,22819],{"class":4003},[2361,23751,3948],{"class":3616},[2361,23753,4012],{"class":2402},[2361,23755,4015],{"class":3616},[2361,23757,4018],{"class":2402},[2361,23759,23760,23763,23765,23767],{"class":2363,"line":1644},[2361,23761,23762],{"class":3616},"  const",[2361,23764,22838],{"class":3512},[2361,23766,3948],{"class":3616},[2361,23768,6583],{"class":2402},[2361,23770,23771,23773,23775,23777,23779,23781,23783,23785,23787,23789,23791,23793,23795],{"class":2363,"line":1641},[2361,23772,19561],{"class":3616},[2361,23774,4151],{"class":2402},[2361,23776,6574],{"class":3616},[2361,23778,19568],{"class":2402},[2361,23780,6580],{"class":3616},[2361,23782,19573],{"class":3512},[2361,23784,19576],{"class":2402},[2361,23786,19579],{"class":3616},[2361,23788,22864],{"class":2402},[2361,23790,19585],{"class":3512},[2361,23792,22869],{"class":2402},[2361,23794,22872],{"class":3616},[2361,23796,18441],{"class":2402},[2361,23798,23799,23802,23804,23807,23809],{"class":2363,"line":3525},[2361,23800,23801],{"class":2402},"    formatted_data.",[2361,23803,6653],{"class":4003},[2361,23805,23806],{"class":2402},"(Object.",[2361,23808,4556],{"class":4003},[2361,23810,23811],{"class":2402},"(data[i]))\n",[2361,23813,23814],{"class":2363,"line":3531},[2361,23815,11293],{"class":2402},[2361,23817,23818],{"class":2363,"line":3603},[2361,23819,5169],{"class":2402},[2361,23821,23822,23824],{"class":2363,"line":3682},[2361,23823,18826],{"class":3616},[2361,23825,22934],{"class":2402},[2361,23827,23828],{"class":2363,"line":3688},[2361,23829,4266],{"class":2402},[2361,23831,23832],{"class":2363,"line":3694},[2361,23833,3528],{"emptyLinePlaceholder":1657},[2361,23835,23836,23838,23840],{"class":2363,"line":3717},[2361,23837,4597],{"class":3616},[2361,23839,22819],{"class":4003},[2361,23841,4215],{"class":2402},[1570,23843,23844,23845,23847,23848,23851,23852,23854],{},"Your data will now be stored in the ",[1740,23846,4607],{}," data token that is output from the \"Write Javascript\" step. Learn more about ",[1596,23849,23850],{"href":1373},"How to pass data between steps in your automation",". Use the ",[1596,23853,667],{"href":1075}," step to loop through the rows of data returned.",[1562,23856,23858],{"id":23857},"triggering-an-axiomai-automation-from-a-supabase-database-event","Triggering an axiom.ai automation from a Supabase database event",[1567,23860],{},[1570,23862,23863,23864,4959],{},"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 ",[1596,23865,1535],{"href":1534},[1570,23867,22742,23868,23870,23871,1696],{},[1596,23869,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 ",[1596,23872,1110],{"href":1111},[1570,23874,23875],{},"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:",[1729,23877,23878],{},[2191,23879,23880,23886,23894],{},[1580,23881,23882,23885],{},[1681,23883,23884],{},"HTTP Request - Method:"," Set to 'POST'.",[1580,23887,23888,23891,23892,1696],{},[1681,23889,23890],{},"HTTP Request - URL:"," the axiom.ai endpoint is ",[1740,23893,2216],{},[1580,23895,23896,23899],{},[1681,23897,23898],{},"Headers:"," often pre-configured, 'Content-Type': 'application\u002Fjson'.",[1570,23901,23902],{},"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.",[1562,23904,2410],{"id":2409},[1567,23906],{},[1570,23908,23909,23910,2862],{},"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 ",[1596,23911,4924],{"href":1214},[1570,23913,4927],{},[1562,23915,2430],{"id":2429},[1567,23917],{},[1570,23919,23920],{},"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!",[1567,23922],{},[1570,23924,23925],{},"Information accurate as of November 2024.",[2445,23927,23928],{},"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":1640,"searchDepth":1641,"depth":1641,"links":23930},[23931,23932,23936,23937,23938],{"id":2181,"depth":1644,"text":2182},{"id":22724,"depth":1644,"text":22725,"children":23933},[23934,23935],{"id":22733,"depth":1641,"text":22734},{"id":23471,"depth":1641,"text":23472},{"id":23857,"depth":1644,"text":23858},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to automatically send data to your Supabase databases and trigger your axiom.ai automations using triggers.",{"type":1740,"format":1729,"intent_type":23941,"intent":2461,"tags":23942,"platfrom":23943},"wokflow",[2463,2464,22655],[22674],"\u002Fguides\u002Fsupabase",{"title":22663,"description":23939},"guides\u002Fsupabase","3QWB2e30Zph2x51OK35CFrTWcGp5GoCSUP_TRpnm_bI",{"id":23949,"title":23950,"body":23951,"date":1651,"description":24317,"extension":1653,"meta":24318,"navigation":1657,"order":1651,"path":24321,"seo":24322,"stem":24323,"__hash__":24324},"guides\u002Fguides\u002Ftadabase.md","How to automate Tadabase with axiom.ai",{"type":1555,"value":23952,"toc":24306},[23953,23955,23963,23965,23967,23992,24000,24004,24007,24011,24020,24026,24029,24033,24036,24056,24090,24095,24099,24102,24118,24201,24207,24211,24215,24218,24221,24237,24271,24275,24277,24280,24287,24293,24295,24298,24304],[1567,23954],{},[1570,23956,23957,23962],{},[1596,23958,23961],{"href":23959,"rel":23960},"https:\u002F\u002Ftadabase.io",[3874],"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.",[1562,23964,2182],{"id":2181},[1570,23966,22682],{},[1729,23968,23969],{},[2191,23970,23971,23974,23977,23980,23989],{},[1580,23972,23973],{},"Sign up to Tadabase.",[1580,23975,23976],{},"Create a new application.",[1580,23978,23979],{},"Create a new data table.",[1580,23981,23982,23983,23988],{},"Sign up to ",[1596,23984,23987],{"href":23985,"rel":23986},"https:\u002F\u002Fcatcher.tadabase.io",[3874],"Tadabase's Webhook Catcher"," (using the same email as your Tadabase account).",[1580,23990,23991],{},"The \"App ID\", \"API Key\" and \"API Secret\" for the application (\"Settings\" → \"API Keys\" → \"Generate New Key\").",[1570,23993,23994,23995,13823],{},"More details on how to do the steps above can be found in the ",[1596,23996,23999],{"href":23997,"rel":23998},"https:\u002F\u002Fdocs.tadabase.io\u002Fgetting-started\u002Farticle\u002Fgetting-started-with-tadabase",[3874],"Getting Started with Tadabase",[1562,24001,24003],{"id":24002},"working-with-tadabase-data-in-axiomai","Working with Tadabase data in axiom.ai",[1570,24005,24006],{},"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.",[1611,24008,24010],{"id":24009},"creating-a-new-webhook","Creating a new webhook",[1570,24012,24013,24014,24019],{},"Tadabase has a great guide on how to set up your application to be ready to receive webhooks, you'll find their ",[1596,24015,24018],{"href":24016,"rel":24017},"https:\u002F\u002Fdocs.tadabase.io\u002Fwebhooks\u002Farticle\u002Fincoming-webhooks",[3874],"Incoming Webhooks"," documentation on their website. We recommend following this before continuing this guide.",[1570,24021,24022,24023,1696],{},"You should end up with a webhook URL similar to the following: ",[1740,24024,24025],{},"https:\u002F\u002Fcatcher.tadabase.io\u002Fwebhook\u002F\u003CID>",[1570,24027,24028],{},"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.",[1611,24030,24032],{"id":24031},"creating-a-single-record","Creating a single record",[1570,24034,24035],{},"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:",[1729,24037,24038],{},[2191,24039,24040,24044,24050],{},[1580,24041,9937,24042,16096],{},[1596,24043,9311],{"href":1194},[1580,24045,24046,24047,24049],{},"Add the webhook URL in the ",[1740,24048,2212],{}," field.",[1580,24051,24052,24053,24055],{},"Configure the ",[1740,24054,17959],{}," field based on your data table fields. See an example below.",[2353,24057,24059],{"className":9321,"code":24058,"language":4212,"meta":1640,"style":1640},"{\n    \"name\": \"Jane Doe\",\n    \"email\": \"example@axiom.ai\"\n}\n",[1740,24060,24061,24065,24076,24086],{"__ignoreMap":1640},[2361,24062,24063],{"class":2363,"line":2364},[2361,24064,9329],{"class":2402},[2361,24066,24067,24069,24071,24074],{"class":2363,"line":1644},[2361,24068,11129],{"class":9334},[2361,24070,3625],{"class":2402},[2361,24072,24073],{"class":2371},"\"Jane Doe\"",[2361,24075,4054],{"class":2402},[2361,24077,24078,24081,24083],{"class":2363,"line":1641},[2361,24079,24080],{"class":9334},"    \"email\"",[2361,24082,3625],{"class":2402},[2361,24084,24085],{"class":2371},"\"example@axiom.ai\"\n",[2361,24087,24088],{"class":2363,"line":3525},[2361,24089,4266],{"class":2402},[1570,24091,24092,24093,13823],{},"Remember, you can use the \"Insert data\" button to insert data tokens from your automation, learn more in our ",[1596,24094,9384],{"href":1373},[1611,24096,24098],{"id":24097},"creating-multiple-records","Creating multiple records",[1570,24100,24101],{},"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:",[1729,24103,24104],{},[2191,24105,24106,24110,24114],{},[1580,24107,9937,24108,16096],{},[1596,24109,9311],{"href":1194},[1580,24111,24046,24112,24049],{},[1740,24113,2212],{},[1580,24115,24052,24116,24055],{},[1740,24117,17959],{},[2353,24119,24121],{"className":9321,"code":24120,"language":4212,"meta":1640,"style":1640},"{\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",[1740,24122,24123,24127,24135,24140,24151,24160,24165,24169,24180,24188,24192,24197],{"__ignoreMap":1640},[2361,24124,24125],{"class":2363,"line":2364},[2361,24126,9329],{"class":2402},[2361,24128,24129,24132],{"class":2363,"line":1644},[2361,24130,24131],{"class":9334},"    \"\u003CMAPPING_FIELD>\"",[2361,24133,24134],{"class":2402},": [\n",[2361,24136,24137],{"class":2363,"line":1641},[2361,24138,24139],{"class":2402},"        {\n",[2361,24141,24142,24145,24147,24149],{"class":2363,"line":3525},[2361,24143,24144],{"class":9334},"            \"name\"",[2361,24146,3625],{"class":2402},[2361,24148,24073],{"class":2371},[2361,24150,4054],{"class":2402},[2361,24152,24153,24156,24158],{"class":2363,"line":3531},[2361,24154,24155],{"class":9334},"            \"email\"",[2361,24157,3625],{"class":2402},[2361,24159,24085],{"class":2371},[2361,24161,24162],{"class":2363,"line":3603},[2361,24163,24164],{"class":2402},"        },\n",[2361,24166,24167],{"class":2363,"line":3682},[2361,24168,24139],{"class":2402},[2361,24170,24171,24173,24175,24178],{"class":2363,"line":3688},[2361,24172,24144],{"class":9334},[2361,24174,3625],{"class":2402},[2361,24176,24177],{"class":2371},"\"John Smith\"",[2361,24179,4054],{"class":2402},[2361,24181,24182,24184,24186],{"class":2363,"line":3694},[2361,24183,24155],{"class":9334},[2361,24185,3625],{"class":2402},[2361,24187,24085],{"class":2371},[2361,24189,24190],{"class":2363,"line":3717},[2361,24191,4189],{"class":2402},[2361,24193,24194],{"class":2363,"line":3770},[2361,24195,24196],{"class":2402},"    ]\n",[2361,24198,24199],{"class":2363,"line":3784},[2361,24200,4266],{"class":2402},[1570,24202,6680,24203,24206],{},[1740,24204,24205],{},"\u003CMAPPING_FIELD>"," should correspond with the field that you inserted into the \"Multi-value Webhook\" field in the field mapping section of your webhook.",[1570,24208,24092,24209,13823],{},[1596,24210,9384],{"href":1373},[1611,24212,24214],{"id":24213},"updating-a-record","Updating a record",[1570,24216,24217],{},"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\".",[1570,24219,24220],{},"Then, in your axiom.ai automation set up your automation as normal, once you are ready to send your data, add the following step:",[1729,24222,24223],{},[2191,24224,24225,24229,24233],{},[1580,24226,9937,24227,16096],{},[1596,24228,9311],{"href":1194},[1580,24230,24046,24231,24049],{},[1681,24232,2212],{},[1580,24234,24052,24235,24055],{},[1681,24236,17959],{},[2353,24238,24240],{"className":9321,"code":24239,"language":4212,"meta":1640,"style":1640},"{\n    \"id\": \"4MXQJdrZ6v\",\n    \"name\": \"John Smith\"\n}\n",[1740,24241,24242,24246,24258,24267],{"__ignoreMap":1640},[2361,24243,24244],{"class":2363,"line":2364},[2361,24245,9329],{"class":2402},[2361,24247,24248,24251,24253,24256],{"class":2363,"line":1644},[2361,24249,24250],{"class":9334},"    \"id\"",[2361,24252,3625],{"class":2402},[2361,24254,24255],{"class":2371},"\"4MXQJdrZ6v\"",[2361,24257,4054],{"class":2402},[2361,24259,24260,24262,24264],{"class":2363,"line":1641},[2361,24261,11129],{"class":9334},[2361,24263,3625],{"class":2402},[2361,24265,24266],{"class":2371},"\"John Smith\"\n",[2361,24268,24269],{"class":2363,"line":3525},[2361,24270,4266],{"class":2402},[1570,24272,24092,24273,13823],{},[1596,24274,9384],{"href":1373},[1562,24276,2410],{"id":2409},[1570,24278,24279],{},"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.",[1570,24281,24282,24283,24286],{},"If your data has not been added, navigate to your webhook in the ",[1596,24284,23987],{"href":23985,"rel":24285},[3874]," where there is a section that details failed webhook requests - review these failed requests for more information on what the error may be.",[1570,24288,24289,24290],{},"If there are errors within your automation, you'll find these in the builder, or in your run reports. Learn more about ",[1596,24291,24292],{"href":1487},"How to Debug",[1562,24294,2430],{"id":2429},[1570,24296,24297],{},"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.",[1570,24299,24300,24303],{},[2441,24301,24302],{},"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.",[2445,24305,9453],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":24307},[24308,24309,24315,24316],{"id":2181,"depth":1644,"text":2182},{"id":24002,"depth":1644,"text":24003,"children":24310},[24311,24312,24313,24314],{"id":24009,"depth":1641,"text":24010},{"id":24031,"depth":1641,"text":24032},{"id":24097,"depth":1641,"text":24098},{"id":24213,"depth":1641,"text":24214},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to automatically send data to your Tadabase databases and trigger your axiom.ai automations using triggers.",{"type":1740,"format":1729,"intent_type":2154,"intent":2461,"tags":24319,"platfrom":24320},[2463,2464,22655],[23961],"\u002Fguides\u002Ftadabase",{"title":23950,"description":24317},"guides\u002Ftadabase","_cFNjxGk-vDSB7sAhmka_Q0nrME7lvBVsOExsf6KD_Y",{"id":24326,"title":24327,"body":24328,"date":1651,"description":24548,"extension":1653,"meta":24549,"navigation":1657,"order":1651,"path":24553,"seo":24554,"stem":24555,"__hash__":24556},"guides\u002Fguides\u002Ftransparency-report.md","How to scrape Google Transparency reports",{"type":1555,"value":24329,"toc":24544},[24330,24332,24338,24341,24355,24373,24377,24379,24381,24384,24414,24418,24420,24437,24443],[1567,24331],{},[1570,24333,6680,24334,24337],{},[1681,24335,24336],{},"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.",[1570,24339,24340],{},"In this guide, you'll learn how to scrape copyright data from these reports into a Google Sheet using two web scrapers:",[1729,24342,24343],{},[2191,24344,24345,24352],{},[1580,24346,24347,24348,24351],{},"The first web scraper will input search terms, extract links to ",[1681,24349,24350],{},"\"Copyright Owners\"",", and save them to a Google Sheet.",[1580,24353,24354],{},"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.",[1570,24356,5565,24357,2094,24363,24369,24370],{},[1681,24358,24359],{},[1596,24360,24362],{"href":24361,"download":1657},"\u002Fdocs\u002Fguides\u002Ftemplates\u002Faxiom_input_search_term_and_scrape_template.json","first",[1681,24364,24365],{},[1596,24366,24368],{"href":24367,"download":1657},"\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, ",[1596,24371,24372],{"href":849},"watch this video.",[2227,24374],{"src":24375,"alt":24376},"\u002Fdocs\u002Fguides\u002Fexplore-the-data.webp","Scraping Google Transparency Report pages for content delistings due to copyright data.",[1562,24378,2182],{"id":2181},[1567,24380],{},[1570,24382,24383],{},"To begin, create a Google Sheet and add search terms to input into the \"Search\" field.",[1729,24385,24386],{},[1577,24387,24388,24396,24402,24408],{},[1580,24389,24390,24393,24394,6816],{},[1681,24391,24392],{},"1. Create a new Google Sheet",": If you're logged into Google, type ",[1740,24395,6815],{},[1580,24397,24398,24401],{},[1681,24399,24400],{},"2. Set up tab one",": Add your search terms to the first tab.",[1580,24403,24404,24407],{},[1681,24405,24406],{},"3. Set up tab two",": Name this second tab \"Copyright Owners.\"",[1580,24409,24410,24413],{},[1681,24411,24412],{},"4. Set up tab three",": Name this third tab \"Domain and Reporting Data.\"",[1562,24415,24417],{"id":24416},"how-to-build-a-web-scraper-to-extract-copyright-owners","How to build a web scraper to extract 'copyright owners'",[1567,24419],{},[1570,24421,24422,24423,24428,24429,5053,24431,24433,24434,24436],{},"This web scraper extracts data from the ",[1596,24424,24427],{"href":24425,"rel":24426},"https:\u002F\u002Ftransparencyreport.google.com\u002Fcopyright\u002Fexplore",[3874],"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 ",[1681,24430,5052],{},[1681,24432,5056],{}," to use the no-code bot builder for creating the Google scraper. Then, click ",[1681,24435,5060],{}," to begin.",[1570,24438,5064,24439,5068,24441],{},[1596,24440,2153],{"href":24361,"download":1657},[1596,24442,5071],{"href":849},[1729,24444,24445],{},[1577,24446,24447,24464,24484],{},[1580,24448,24449,1738,24451,24453],{},[1681,24450,1737],{},[1740,24452,1742],{},[1577,24454,24455,24460],{},[1580,24456,24457,24459],{},[1740,24458,1749],{},": Search for the Google Sheet you created in the \"Spreadsheet\" field. Once found, click to select.",[1580,24461,24462,9563],{},[1740,24463,1755],{},[1580,24465,24466,1738,24468,24470],{},[1681,24467,1761],{},[1740,24469,1043],{},[1577,24471,24472],{},[1580,24473,24474,24476,24477,5346,24480,5169],{},[1740,24475,1779],{},": Insert this ",[1596,24478,5537],{"href":24425,"rel":24479},[3874],[2227,24481],{"src":24482,"alt":24483},"\u002Fdocs\u002Fguides\u002Fscraper-one-url.webp","axiom.ai using the go-to page step to load the Transparency Report page",[1580,24485,24486,1738,24488,24490,24500],{},[1681,24487,5375],{},[1740,24489,667],{},[1577,24491,24492],{},[1580,24493,24494,24496,24497,24499],{},[1740,24495,667],{},": Click 'Insert Data' and select ",[1740,24498,1787],{},". The loop step will now iterate through the URLs in the Google Sheet.",[1577,24501,24502,24526,24539],{},[1580,24503,24504,1738,24506,24508],{},[1681,24505,8025],{},[1740,24507,8028],{},[1577,24509,24510,24517],{},[1580,24511,24512,24496,24514,24516],{},[1740,24513,2587],{},[1740,24515,1787],{}," to pass the search term from the sheet.",[1580,24518,24519,24521,24522,5169],{},[1740,24520,6939],{},": Choose column 'A' in the preview.\n",[2227,24523],{"src":24524,"alt":24525},"\u002Fdocs\u002Fguides\u002Fscraper-one-search.webp","axiom.ai using the enter text step to input search terms in the Google Transparency Report page",[1580,24527,24528,1738,24530,24532],{},[1681,24529,8037],{},[1740,24531,16399],{},[1577,24533,24534],{},[1580,24535,24536,24538],{},[1740,24537,6962],{},": Press 'Record', then 'Return'.",[1580,24540,24541,24543],{},[1681,24542,8048],{}," `",{"title":1640,"searchDepth":1641,"depth":1641,"links":24545},[24546,24547],{"id":2181,"depth":1644,"text":2182},{"id":24416,"depth":1644,"text":24417},"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":1657,"type":2152,"format":1729,"intent_type":2682,"intent":9901,"tags":24550,"platfrom":24552},[2158,24551,21137],"reporting",[8907],"\u002Fguides\u002Ftransparency-report",{"title":24327,"description":24548},"guides\u002Ftransparency-report","n9dwxRTZYdzNhbDsqBJA1jTx-eCKxyLJTTXnM5rSDUg",{"id":24558,"title":24559,"body":24560,"date":2676,"description":24809,"extension":1653,"meta":24810,"navigation":1657,"order":1651,"path":24814,"seo":24815,"stem":24816,"__hash__":24817},"guides\u002Fguides\u002Ftwitter-direct-messages.md","How to automate Twitter X direct messages",{"type":1555,"value":24561,"toc":24801},[24562,24564,24567,24569,24571,24579,24583,24590,24594,24596,24600,24706,24710,24715,24717,24721,24723,24728,24797],[1567,24563],{},[1570,24565,24566],{},"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,24568],{},[1562,24570,2487],{"id":2486},[1570,24572,1679,24573,20850,24575,24578],{},[1681,24574,1683],{},[1681,24576,24577],{},"\"Twitter Messages\""," then add profile links.",[1562,24580,24582],{"id":24581},"install-the-twitter-x-direct-messages-bot","Install the Twitter X direct messages bot",[1570,24584,24585,24586,1707,24588,1711],{},"To install this Twitter X direct messages bot click ",[1681,24587,1706],{},[1681,24589,1710],{},[1570,24591,1714,24592,1696],{},[1681,24593,1717],{},[1570,24595,1720],{},[1562,24597,24599],{"id":24598},"configure-your-twitter-x-direct-messages-bot","Configure your Twitter X direct messages bot",[1729,24601,24602,24704],{},[1577,24603,24604,24621],{},[1580,24605,24606,1738,24608,24610],{},[1681,24607,1737],{},[1740,24609,1742],{},[1577,24611,24612,24616],{},[1580,24613,24614,1750],{},[1740,24615,1749],{},[1580,24617,24618,24620],{},[1740,24619,1755],{},": Choose the tab with the profile links.",[1580,24622,24623,1738,24625,24627],{},[1681,24624,1761],{},[1740,24626,667],{},[1577,24628,24629,24645,24651,24688],{},[1580,24630,24631,1738,24633,24635],{},[1681,24632,1770],{},[1740,24634,1043],{},[1577,24636,24637],{},[1580,24638,24639,1780,24641,1784,24643,1696],{},[1740,24640,1779],{},[1740,24642,1841],{},[1740,24644,1874],{},[1580,24646,24647,1738,24649,11878],{},[1681,24648,1793],{},[1740,24650,1796],{},[1580,24652,24653,1738,24655,14434,24657],{},[1681,24654,1818],{},[1740,24656,12926],{},[1577,24658,24659,24664,24680],{},[1580,24660,24661,11878],{},[1681,24662,24663],{},"2.3.1 – 2.3.2",[1580,24665,24666,1738,24669,24671],{},[1681,24667,24668],{},"2.3.3",[1740,24670,2580],{},[1577,24672,24673],{},[1580,24674,24675,1780,24677,24679],{},[1740,24676,2587],{},[1740,24678,1841],{},", select message from Google Sheet or type directly into the input.",[1580,24681,24682,1738,24685,11878],{},[1681,24683,24684],{},"2.3.4",[1740,24686,24687],{},"Press Key(s): Send message",[1580,24689,24690,1738,24692,24694],{},[1681,24691,1860],{},[1740,24693,1928],{},[1577,24695,24696,24700],{},[1580,24697,24698,1750],{},[1740,24699,1749],{},[1580,24701,24702,14405],{},[1740,24703,1755],{},[1570,24705,2617],{},[1562,24707,24709],{"id":24708},"run-your-twitter-x-direct-messages-bot","Run your Twitter X direct messages bot",[1570,24711,24712,24713,1696],{},"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, ",[1596,24714,2627],{"href":638},[1562,24716,1964],{"id":1963},[1570,24718,1967,24719,1972],{},[1596,24720,1971],{"href":1970},[1562,24722,1398],{"id":1975},[1570,24724,24725,24726,1696],{},"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 ",[1596,24727,2627],{"href":638},[1729,24729,24730],{},[1577,24731,24732,24742,24752,24763,24773,24786],{},[1580,24733,24734,24737,1991,24739,24741],{},[1681,24735,24736],{},"Profile pages not loading?",[1989,24738],{},[1740,24740,14808],{},", check you have inserted the data correctly.",[1580,24743,24744,24747,1991,24749,24751],{},[1681,24745,24746],{},"No data being found?",[1989,24748],{},[1740,24750,2013],{},", reselect an element that wraps around the message button.",[1580,24753,24754,24757,1991,24759,24762],{},[1681,24755,24756],{},"Not running X in English?",[1989,24758],{},[1740,24760,24761],{},"Step 2.3 – If condition: Check for Message button",", change the condition to check for 'Message' in your native language.",[1580,24764,24765,24768,24770,24771,1696],{},[1681,24766,24767],{},"Data to check not set?",[1989,24769],{},"\nIn the same step, make sure it is set to ",[1740,24772,1845],{},[1580,24774,24775,24777,1991,24779,24782,24783,1696],{},[1681,24776,9087],{},[1989,24778],{},[1740,24780,24781],{},"Step 2.3.1 – Click Element: Message",", reselect the message button. Try using the ",[1596,24784,24785],{"href":1391},"text selector",[1580,24787,24788,24791,1991,24793,24796],{},[1681,24789,24790],{},"No message being added?",[1989,24792],{},[1740,24794,24795],{},"Step 2.3.3 – Enter Text: Message",", check you have inserted data or try reselecting the text input field.",[1570,24798,2127,24799],{},[1596,24800,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":24802},[24803,24804,24805,24806,24807,24808],{"id":2486,"depth":1644,"text":2487},{"id":24581,"depth":1644,"text":24582},{"id":24598,"depth":1644,"text":24599},{"id":24708,"depth":1644,"text":24709},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":2679,"level":2149,"video":24811,"templateId":6417,"type":2152,"format":2153,"intent_type":2682,"intent":2683,"tags":24812,"platfrom":24813},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F6GPiwu8on0Q",[2685,2686,2689],[11682,11683],"\u002Fguides\u002Ftwitter-direct-messages",{"title":24559,"description":24809},"guides\u002Ftwitter-direct-messages","FRkc4W9-rgU8_sevokVUqlIUROXCjeQr_UiMjeNXmIs",{"id":24819,"title":24820,"body":24821,"date":24998,"description":24999,"extension":1653,"meta":25000,"navigation":1657,"order":1651,"path":25005,"seo":25006,"stem":25007,"__hash__":25008},"guides\u002Fguides\u002Fupload-files-from-a-google-sheet.md","How to automate uploading files",{"type":1555,"value":24822,"toc":24990},[24823,24825,24828,24830,24832,24837,24841,24849,24851,24853,24857,24934,24938,24941,24943,24954,24956,24958,24986],[1567,24824],{},[1570,24826,24827],{},"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,24829],{},[1562,24831,1676],{"id":1675},[1570,24833,1679,24834,24836],{},[1681,24835,1683],{},", assuming you already have an account. Name your sheet something like 'Uploads’, add file paths into column A.",[1562,24838,24840],{"id":24839},"install-the-file-upload-bot","Install the File upload bot",[1570,24842,24843,24844,24846,24847,1711],{},"To install this File upload bot click ",[1681,24845,1706],{},".  If you’re a new user, you’ll have to click ",[1681,24848,1710],{},[1570,24850,2510],{},[1570,24852,1720],{},[1562,24854,24856],{"id":24855},"configure-your-file-upload-bot","Configure your File upload bot",[1729,24858,24859],{},[1577,24860,24861,24878],{},[1580,24862,24863,1738,24865,24867],{},[1681,24864,1737],{},[1740,24866,1742],{},[1577,24868,24869,24873],{},[1580,24870,24871,1750],{},[1740,24872,1749],{},[1580,24874,24875,24877],{},[1740,24876,1755],{},": Choose the sheet tab with your file paths in.",[1580,24879,24880,1738,24882,24884],{},[1681,24881,1761],{},[1740,24883,667],{},[1577,24885,24886,24899,24921],{},[1580,24887,24888,1738,24890,24892],{},[1681,24889,1770],{},[1740,24891,1043],{},[1577,24893,24894],{},[1580,24895,24896,24898],{},[1740,24897,1779],{},": Please enter the URL of the website where you want to upload your file.",[1580,24900,24901,1738,24903,24906],{},[1681,24902,1793],{},[1740,24904,24905],{},"Upload a file",[1577,24907,24908,24913],{},[1580,24909,24910,24912],{},[1740,24911,11527],{},": Click 'Select' to choose the form element to upload the file to.",[1580,24914,24915,24917,24918,24920],{},[1740,24916,2822],{},": Input the file paths by clicking 'Insert data', select ",[1740,24919,1787],{},", then select the column with the file paths.",[1580,24922,24923,1738,24925,24927],{},[1681,24924,1818],{},[1740,24926,1209],{},[1577,24928,24929],{},[1580,24930,24931,24933],{},[1740,24932,17085],{},": Pause the bot to allow the file upload to complete. Set a wait time appropriate for the file size.",[1562,24935,24937],{"id":24936},"run-your-file-upload-bot","Run your File upload bot",[1570,24939,24940],{},"We suggest running a test first, stopping the bot after a few uploads and checking the files uploaded.",[1562,24942,1964],{"id":1963},[1570,24944,1967,24945,24947,24948,24950,24951,2862],{},[1596,24946,1971],{"href":1970},", you can use our no-code bot builder to customize any bot according to your requirements. We have other upload file ",[1596,24949,1543],{"href":1542}," you can use that work in the cloud and on desktop. Take a look at the ",[1596,24952,24953],{"href":1206},"upload to Google Drive",[1562,24955,1398],{"id":1975},[1570,24957,1978],{},[1729,24959,24960],{},[1577,24961,24962,24971,24978],{},[1580,24963,24964,24967,12195,24969,1696],{},[1681,24965,24966],{},"Selectors fail to find the element?",[1989,24968],{},[1596,24970,9093],{"href":1383},[1580,24972,24973,24976,12205],{},[1681,24974,24975],{},"Files do not upload?",[1989,24977],{},[1580,24979,24980,24983,24985],{},[1681,24981,24982],{},"Upload does not complete?",[1989,24984],{},"\nIncrease the pause, to allow the file upload to complete.",[1570,24987,2127,24988],{},[1596,24989,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":24991},[24992,24993,24994,24995,24996,24997],{"id":1675,"depth":1644,"text":1676},{"id":24839,"depth":1644,"text":24840},{"id":24855,"depth":1644,"text":24856},{"id":24936,"depth":1644,"text":24937},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":3158,"level":2149,"video":25001,"templateId":6350,"type":2152,"format":2153,"intent_type":3384,"intent":12244,"tags":25002,"platfrom":25004},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F6lYZkxOmcX0",[12246,25003,24551],"upload",[3387],"\u002Fguides\u002Fupload-files-from-a-google-sheet",{"title":24820,"description":24999},"guides\u002Fupload-files-from-a-google-sheet","yrDvrLFpwWbzcEWFvdDQ6ARjTuCr6cu1-Fj2YUAfSCk",{"id":25010,"title":25011,"body":25012,"date":1651,"description":25021,"extension":1653,"meta":25022,"navigation":1657,"order":1651,"path":14303,"seo":25023,"stem":25024,"__hash__":25025},"guides\u002Fguides\u002Fusecase.md","Use case guides",{"type":1555,"value":25013,"toc":25019},[25014,25017],[1570,25015,25016],{},"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.",[18017,25018],{"intent":2682},{"title":1640,"searchDepth":1641,"depth":1641,"links":25020},[],"Real-world automation examples with ready-to-use templates for scraping and automating tasks across popular sites and tools.",{"layout":18023},{"title":25011,"description":25021},"guides\u002Fusecase","KSJPmun6PZ5eQQVLXvr_iU6DVYfyFqS1YL7LGbghts0",{"id":25027,"title":25028,"body":25029,"date":2676,"description":25301,"extension":1653,"meta":25302,"navigation":1657,"order":1651,"path":16553,"seo":25306,"stem":25307,"__hash__":25308},"guides\u002Fguides\u002Fweb-scraping-looping-through-pages.md","How to scrape links in a Google Sheet",{"type":1555,"value":25030,"toc":25293},[25031,25033,25036,25038,25040,25051,25055,25062,25066,25068,25072,25191,25195,25198,25200,25204,25206,25208,25275],[1567,25032],{},[1570,25034,25035],{},"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,25037],{},[1562,25039,1676],{"id":1675},[1570,25041,25042,25043,1688,25046,1692,25049,1696],{},"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 ",[1681,25044,25045],{},"Web Scraper",[1681,25047,25048],{},"\"Page links\"",[1681,25050,1695],{},[1562,25052,25054],{"id":25053},"install-the-web-scraper","Install the Web scraper",[1570,25056,25057,25058,1707,25060,1711],{},"To install this Web scraper click ",[1681,25059,1706],{},[1681,25061,1710],{},[1570,25063,1714,25064,1696],{},[1681,25065,1717],{},[1570,25067,1720],{},[1562,25069,25071],{"id":25070},"configure-your-web-scraper-in-minutes","Configure your Web scraper in minutes",[1729,25073,25074],{},[1577,25075,25076,25094],{},[1580,25077,25078,1738,25080,25082],{},[1681,25079,1737],{},[1740,25081,1742],{},[1577,25083,25084,25088],{},[1580,25085,25086,1750],{},[1740,25087,1749],{},[1580,25089,25090,7518,25092,1696],{},[1740,25091,1755],{},[1740,25093,7521],{},[1580,25095,25096,1738,25098,25100],{},[1681,25097,1761],{},[1740,25099,667],{},[1577,25101,25102,25116,25135,25163],{},[1580,25103,25104,1738,25106,25108],{},[1681,25105,1770],{},[1740,25107,1043],{},[1577,25109,25110],{},[1580,25111,25112,3251,25114,3254],{},[1740,25113,1779],{},[1740,25115,1787],{},[1580,25117,25118,1738,25120,25122],{},[1681,25119,1793],{},[1740,25121,1796],{},[1577,25123,25124,25131],{},[1580,25125,25126,3625,25128,25130],{},[1740,25127,1803],{},[1596,25129,20947],{"href":1387}," to choose the data you wish to scrape.",[1580,25132,25133,20953],{},[1740,25134,1809],{},[1580,25136,25137,1738,25139,25141],{},[1681,25138,1818],{},[1740,25140,4924],{},[1577,25142,25143,25147,25151,25157],{},[1580,25144,25145,1750],{},[1740,25146,1749],{},[1580,25148,25149,1902],{},[1740,25150,1755],{},[1580,25152,25153,1908,25155,1696],{},[1740,25154,1907],{},[1740,25156,1845],{},[1580,25158,25159,1917,25161,1696],{},[1740,25160,1916],{},[1740,25162,1920],{},[1580,25164,25165,1738,25167,25169],{},[1681,25166,1860],{},[1740,25168,1928],{},[1577,25170,25171,25175,25179,25185],{},[1580,25172,25173,1750],{},[1740,25174,1749],{},[1580,25176,25177,1939],{},[1740,25178,1755],{},[1580,25180,25181,1810,25183,1696],{},[1740,25182,1944],{},[1740,25184,1813],{},[1580,25186,25187,1810,25189,1696],{},[1740,25188,1951],{},[1740,25190,1813],{},[1562,25192,25194],{"id":25193},"run-your-web-scraper","Run your Web scraper",[1570,25196,25197],{},"We suggest running a test first, stopping the bot after a few loops, and reviewing the scraped data.",[1562,25199,1964],{"id":1963},[1570,25201,1967,25202,1972],{},[1596,25203,1971],{"href":1970},[1562,25205,1398],{"id":1975},[1570,25207,1978],{},[1729,25209,25210],{},[1577,25211,25212,25224,25234,25246,25254,25267],{},[1580,25213,25214,25216,1991,25218,1995,25220,21041,25222,21044],{},[1681,25215,1987],{},[1989,25217],{},[1740,25219,1994],{},[1740,25221,1998],{},[1740,25223,3353],{},[1580,25225,25226,25228,1991,25230,21054,25232,1696],{},[1681,25227,2008],{},[1989,25229],{},[1740,25231,2013],{},[1596,25233,9093],{"href":1383},[1580,25235,25236,25238,2037,25240,2041,25242,2045,25244,1696],{},[1681,25237,21061],{},[1989,25239],{},[1740,25241,2040],{},[1740,25243,2044],{},[1740,25245,1813],{},[1580,25247,25248,25250,21077,25252,21080],{},[1681,25249,21074],{},[1989,25251],{},[1740,25253,1809],{},[1580,25255,25256,25258,1991,25260,2088,25263,2110,25265,1696],{},[1681,25257,2103],{},[1989,25259],{},[1740,25261,25262],{},"Step 2.3 – Write Data to a Google Sheet",[1740,25264,2109],{},[1740,25266,1845],{},[1580,25268,25269,25271,2120,25273,2124],{},[1681,25270,2117],{},[1989,25272],{},[1740,25274,2123],{},[1570,25276,2127,25277,25279,25280,25283,25284,25288,25289],{},[1596,25278,2130],{"href":82},"\nIf you are keen to learn more about scraping, take a look at these guides: ",[1596,25281,25282],{"href":2134},"web scraping with an AI",", Killer-problems with ",[1596,25285,25287],{"href":25286},"\u002Fblog\u002F5-problems-webscrapers","web scrapers"," and how to use ",[1596,25290,25292],{"href":25291},"\u002Fblog\u002Fcss-attribute-selectors","Custom CSS selectors.",{"title":1640,"searchDepth":1641,"depth":1641,"links":25294},[25295,25296,25297,25298,25299,25300],{"id":1675,"depth":1644,"text":1676},{"id":25053,"depth":1644,"text":25054},{"id":25070,"depth":1644,"text":25071},{"id":25193,"depth":1644,"text":25194},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":9122,"level":2149,"video":25303,"templateId":1644,"type":2152,"format":2153,"intent_type":3384,"intent":5637,"tags":25304,"platfrom":25305},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002Fl8KtLMXuDes",[2158,2689],[3387],{"title":25028,"description":25301},"guides\u002Fweb-scraping-looping-through-pages","u_dFgHDZm4XmAusPoEzM6_TryYrpGFZntWPnkkJxQJk",{"id":25310,"title":25311,"body":25312,"date":1651,"description":25818,"extension":1653,"meta":25819,"navigation":1657,"order":1651,"path":25822,"seo":25823,"stem":25824,"__hash__":25825},"guides\u002Fguides\u002Fwebhooks.md","How to use webhooks with axiom.ai",{"type":1555,"value":25313,"toc":25808},[25314,25316,25323,25325,25328,25348,25351,25355,25358,25372,25376,25381,25395,25400,25403,25406,25420,25428,25709,25720,25724,25728,25731,25752,25755,25760,25762,25765,25768,25771,25786,25788,25799,25805],[1567,25315],{},[1570,25317,25318,25319,25322],{},"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 ",[1596,25320,10504],{"href":25321},".\u002F"," for more specific guides.",[1562,25324,2182],{"id":2181},[1570,25326,25327],{},"To get started with triggering a webhook using an automation, you will need the following from the axiom.ai Chrome extension:",[1729,25329,25330],{},[1577,25331,25332,25338,25342],{},[1580,25333,25334,2197,25336,1696],{},[1740,25335,1628],{},[1596,25337,2201],{"href":2200},[1580,25339,25340,2207],{},[1740,25341,2206],{},[1580,25343,25344,2213,25346,1696],{},[1740,25345,2212],{},[1740,25347,2216],{},[1570,25349,25350],{},"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.",[1562,25352,25354],{"id":25353},"triggering-a-webhook-from-an-axiomai-automation","Triggering a webhook from an axiom.ai automation",[1570,25356,25357],{},"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:",[1729,25359,25360],{},[2191,25361,25362,25367],{},[1580,25363,25364,25366],{},[1740,25365,2212],{},": The endpoint that needs to be triggered by your automation.",[1580,25368,25369,25371],{},[1740,25370,17959],{},": The payload format that is required.",[1611,25373,25375],{"id":25374},"low-code","Low-code",[1570,25377,6680,25378,25380],{},[1596,25379,9311],{"href":1194}," step can be used in order to trigger a webhook from your automations. Follow the steps below to get started:",[1729,25382,25383],{},[2191,25384,25385,25389,25392],{},[1580,25386,9937,25387,2862],{},[1596,25388,9311],{"href":1194},[1580,25390,25391],{},"Enter the \"Endpoint\".",[1580,25393,25394],{},"Enter the \"Payload\".",[1570,25396,25397,25398,13970],{},"Remember, the \"Insert data\" option can be used to dynamically input data from your automation into your payload, see ",[1596,25399,9229],{"href":1373},[1611,25401,12609],{"id":25402},"javascript",[1570,25404,25405],{},"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:",[2191,25407,25408,25411,25414,25417],{},[1580,25409,25410],{},"Allowing you to receive additional data, from a database, for example.",[1580,25412,25413],{},"Having more control over headers - for example, authorization headers.",[1580,25415,25416],{},"Being able to parse the response.",[1580,25418,25419],{},"Being able to use the response to automatically retry the call in the event of a rate limit being hit.",[1570,25421,22742,25422,25424,25425,25427],{},[1596,25423,3928],{"href":1226}," step to your automation and use the ",[1740,25426,11239],{}," method. See the example below to get started.",[2353,25429,25431],{"className":2390,"code":25430,"language":2392,"meta":1640,"style":1640},"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",[1740,25432,25433,25447,25461,25471,25478,25503,25507,25511,25528,25534,25549,25557,25561,25567,25583,25592,25596,25613,25617,25621,25631,25643,25649,25653,25657,25673,25681,25689,25701,25705],{"__ignoreMap":1640},[2361,25434,25435,25437,25440,25442,25445],{"class":2363,"line":2364},[2361,25436,3942],{"class":3616},[2361,25438,25439],{"class":3512}," url",[2361,25441,3948],{"class":3616},[2361,25443,25444],{"class":2371}," \"https:\u002F\u002Fexample.com\u002Fwebhook\"",[2361,25446,3954],{"class":2402},[2361,25448,25449,25451,25454,25456,25459],{"class":2363,"line":1644},[2361,25450,3942],{"class":3616},[2361,25452,25453],{"class":3512}," apiKey",[2361,25455,3948],{"class":3616},[2361,25457,25458],{"class":2371}," \"xxxxxxxxxx\"",[2361,25460,3954],{"class":2402},[2361,25462,25463,25465,25467,25469],{"class":2363,"line":1641},[2361,25464,3942],{"class":3616},[2361,25466,23725],{"class":3512},[2361,25468,3948],{"class":3616},[2361,25470,4018],{"class":2402},[2361,25472,25473,25475],{"class":2363,"line":3525},[2361,25474,11117],{"class":2371},[2361,25476,25477],{"class":2402},": apiKey,\n",[2361,25479,25480,25482,25484,25486,25488,25490,25493,25495,25497,25500],{"class":2363,"line":3531},[2361,25481,11141],{"class":2371},[2361,25483,3660],{"class":2402},[2361,25485,1813],{"class":3512},[2361,25487,3634],{"class":2402},[2361,25489,10467],{"class":3512},[2361,25491,25492],{"class":2402},"], [",[2361,25494,18879],{"class":3512},[2361,25496,3634],{"class":2402},[2361,25498,25499],{"class":3512},"4",[2361,25501,25502],{"class":2402},"]]\n",[2361,25504,25505],{"class":2363,"line":3603},[2361,25506,18415],{"class":2402},[2361,25508,25509],{"class":2363,"line":3682},[2361,25510,3528],{"emptyLinePlaceholder":1657},[2361,25512,25513,25515,25518,25520,25522,25524,25526],{"class":2363,"line":3688},[2361,25514,3942],{"class":3616},[2361,25516,25517],{"class":4003}," sendData",[2361,25519,3948],{"class":3616},[2361,25521,4009],{"class":3616},[2361,25523,4012],{"class":2402},[2361,25525,4015],{"class":3616},[2361,25527,4018],{"class":2402},[2361,25529,25530,25532],{"class":2363,"line":3694},[2361,25531,4023],{"class":3616},[2361,25533,4018],{"class":2402},[2361,25535,25536,25538,25540,25542,25544,25546],{"class":2363,"line":3717},[2361,25537,4030],{"class":3616},[2361,25539,3723],{"class":3512},[2361,25541,3948],{"class":3616},[2361,25543,4037],{"class":3616},[2361,25545,4040],{"class":4003},[2361,25547,25548],{"class":2402},"(url, {\n",[2361,25550,25551,25553,25555],{"class":2363,"line":3770},[2361,25552,4048],{"class":2402},[2361,25554,4051],{"class":2371},[2361,25556,4054],{"class":2402},[2361,25558,25559],{"class":2363,"line":3784},[2361,25560,4059],{"class":2402},[2361,25562,25563,25565],{"class":2363,"line":3160},[2361,25564,23005],{"class":2371},[2361,25566,25477],{"class":2402},[2361,25568,25569,25572,25574,25576,25579,25581],{"class":2363,"line":3808},[2361,25570,25571],{"class":2371},"                'Authorization'",[2361,25573,3625],{"class":2402},[2361,25575,18487],{"class":2371},[2361,25577,25578],{"class":2402},"apiKey",[2361,25580,4075],{"class":2371},[2361,25582,4054],{"class":2402},[2361,25584,25585,25588,25590],{"class":2363,"line":3817},[2361,25586,25587],{"class":2371},"                'Content-Type'",[2361,25589,3625],{"class":2402},[2361,25591,18504],{"class":2371},[2361,25593,25594],{"class":2363,"line":4160},[2361,25595,4092],{"class":2402},[2361,25597,25598,25600,25602,25604,25606,25608,25610],{"class":2363,"line":4178},[2361,25599,4097],{"class":2402},[2361,25601,11201],{"class":3512},[2361,25603,1696],{"class":2402},[2361,25605,11206],{"class":4003},[2361,25607,4169],{"class":2402},[2361,25609,23052],{"class":4003},[2361,25611,25612],{"class":2402},"(data))\n",[2361,25614,25615],{"class":2363,"line":4186},[2361,25616,4138],{"class":2402},[2361,25618,25619],{"class":2363,"line":4192},[2361,25620,23064],{"class":2402},[2361,25622,25623,25625,25627,25629],{"class":2363,"line":4197},[2361,25624,4148],{"class":3616},[2361,25626,4151],{"class":2402},[2361,25628,4154],{"class":3616},[2361,25630,4157],{"class":2402},[2361,25632,25633,25635,25637,25639,25641],{"class":2363,"line":4218},[2361,25634,4163],{"class":2402},[2361,25636,4166],{"class":4003},[2361,25638,4169],{"class":2402},[2361,25640,4172],{"class":2371},[2361,25642,4512],{"class":2402},[2361,25644,25645,25647],{"class":2363,"line":4230},[2361,25646,4181],{"class":3616},[2361,25648,3954],{"class":2402},[2361,25650,25651],{"class":2363,"line":4242},[2361,25652,4189],{"class":2402},[2361,25654,25655],{"class":2363,"line":4257},[2361,25656,4143],{"class":2402},[2361,25658,25659,25661,25663,25665,25667,25669,25671],{"class":2363,"line":4263},[2361,25660,4030],{"class":3616},[2361,25662,4202],{"class":3512},[2361,25664,3948],{"class":3616},[2361,25666,4037],{"class":3616},[2361,25668,4209],{"class":2402},[2361,25670,4212],{"class":4003},[2361,25672,4215],{"class":2402},[2361,25674,25675,25677,25679],{"class":2363,"line":4269},[2361,25676,4221],{"class":2402},[2361,25678,4224],{"class":4003},[2361,25680,4227],{"class":2402},[2361,25682,25683,25685,25687],{"class":2363,"line":4274},[2361,25684,4233],{"class":2402},[2361,25686,4236],{"class":3616},[2361,25688,4239],{"class":2402},[2361,25690,25691,25693,25695,25697,25699],{"class":2363,"line":6268},[2361,25692,4221],{"class":2402},[2361,25694,4166],{"class":4003},[2361,25696,4169],{"class":2402},[2361,25698,4251],{"class":2371},[2361,25700,4254],{"class":2402},[2361,25702,25703],{"class":2363,"line":6273},[2361,25704,4260],{"class":2402},[2361,25706,25707],{"class":2363,"line":2947},[2361,25708,4266],{"class":2402},[1570,25710,25711,25712,25714,25715,13823],{},"Learn more about the ",[1740,25713,11239],{}," function in the Mozilla ",[1596,25716,25719],{"href":25717,"rel":25718},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FFetch_API\u002FUsing_Fetch",[3874],"Using the Fetch API",[1570,25721,25397,25722,13970],{},[1596,25723,9229],{"href":1373},[1562,25725,25727],{"id":25726},"triggering-an-axiomai-automation-from-a-webhook","Triggering an axiom.ai automation from a webhook",[1570,25729,25730],{},"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:",[1729,25732,25733],{},[1577,25734,25735,25744],{},[1580,25736,25737,1738,25739,2246,25742,2862],{},[1681,25738,1737],{},[1740,25740,25741],{},"Receive data from a webhook",[1596,25743,25741],{"href":1111},[1580,25745,25746,1738,25748,25751],{},[1681,25747,1761],{},[1740,25749,25750],{},"Test data",": Configure the test data input with the expected payload from the third-party application.",[1570,25753,25754],{},"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.",[1570,25756,25757],{},[2441,25758,25759],{},"Note, triggering automations from webhooks is only available in specific plans with the 'webhooks' feature.",[1562,25761,2410],{"id":2409},[1570,25763,25764],{},"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.",[1570,25766,25767],{},"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.",[1570,25769,25770],{},"Additionally, the resources below may be helpful in debugging your automation:",[1577,25772,25773,25777,25781],{},[1580,25774,25775],{},[1596,25776,4933],{"href":1487},[1580,25778,25779],{},[1596,25780,1408],{"href":1409},[1580,25782,25783],{},[1596,25784,25785],{"href":1405},"Handling errors",[1562,25787,2430],{"id":2429},[1570,25789,25790,25791,25794,25795,1696],{},"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 ",[1596,25792,22674],{"href":25793},".\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 ",[1596,25796,25798],{"href":4943,"rel":25797},[3874],"Reddit community",[1570,25800,25801,25802,1696],{},"Can't get an API call to work? Ask an expert in our ",[1596,25803,25798],{"href":4943,"rel":25804},[3874],[2445,25806,25807],{},"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":1640,"searchDepth":1641,"depth":1641,"links":25809},[25810,25811,25815,25816,25817],{"id":2181,"depth":1644,"text":2182},{"id":25353,"depth":1644,"text":25354,"children":25812},[25813,25814],{"id":25374,"depth":1641,"text":25375},{"id":25402,"depth":1641,"text":12609},{"id":25726,"depth":1644,"text":25727},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to use webhooks to send or receive data within your axiom.ai automations.",{"type":2152,"format":2153,"intent_type":2154,"intent":2461,"tags":25820,"platfrom":25821},[2463,2464],[3387],"\u002Fguides\u002Fwebhooks",{"title":25311,"description":25818},"guides\u002Fwebhooks","yUw3OkbuU80B2i3-FtNSJ5BOsb_O3TQKsAwcVGh_W6k",{"id":25827,"title":25828,"body":25829,"date":1651,"description":25838,"extension":1653,"meta":25839,"navigation":1657,"order":1651,"path":14287,"seo":25840,"stem":25841,"__hash__":25842},"guides\u002Fguides\u002Fworkflow.md","Workflow guides",{"type":1555,"value":25830,"toc":25836},[25831,25834],[1570,25832,25833],{},"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.",[18017,25835],{"intent":3384},{"title":1640,"searchDepth":1641,"depth":1641,"links":25837},[],"Step-by-step tutorials for common browser automation tasks in axiom.ai—scraping loops, monitoring pages, data entry, file flows, and webhooks.",{"layout":18023},{"title":25828,"description":25838},"guides\u002Fworkflow","2mWYgSRKBVREDCn9DZLg_Bm7gPaUyDR82rvzN-3ocCE",{"id":25844,"title":25845,"body":25846,"date":1651,"description":26113,"extension":1653,"meta":26114,"navigation":1657,"order":1651,"path":26118,"seo":26119,"stem":26120,"__hash__":26121},"guides\u002Fguides\u002Fzapier.md","How to trigger Zapier Zaps using axiom.ai",{"type":1555,"value":25847,"toc":26103},[25848,25850,25853,25855,25857,25859,25861,25881,25885,25887,25890,25914,25917,25927,25930,25945,25948,25992,25996,25998,26000,26003,26010,26012,26014,26018,26020,26023,26048,26055,26059,26061,26068,26093,26096,26098,26100],[1567,25849],{},[1570,25851,25852],{},"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,25854],{},[1562,25856,2182],{"id":2181},[1567,25858],{},[1570,25860,2187],{},[1729,25862,25863],{},[2191,25864,25865,25871,25875],{},[1580,25866,25867,3415,25869,1696],{},[1681,25868,1628],{},[1596,25870,2201],{"href":2200},[1580,25872,25873,3422],{},[1681,25874,2206],{},[1580,25876,25877,3427,25879,1696],{},[1681,25878,2212],{},[1740,25880,2216],{},[1562,25882,25884],{"id":25883},"triggering-a-zap-using-an-axiomai-automation","Triggering a Zap using an axiom.ai automation",[1567,25886],{},[1570,25888,25889],{},"To get started, we are going to assume that you have an automation created.",[1729,25891,25892],{},[2191,25893,25894,25900,25906],{},[1580,25895,25896,25899],{},[1681,25897,25898],{},"Create Zap"," - Create a new Zap by navigating to Zapier, and clicking \"+ Create\".",[1580,25901,25902,25905],{},[1681,25903,25904],{},"Add trigger"," - Click \"Trigger\", then select \"Webhooks by Zapier\". See the section below for more information on configuring this trigger.",[1580,25907,25908,25910,25911,25913],{},[1681,25909,9311],{}," - In axiom.ai, add a ",[1596,25912,9311],{"href":1194}," step to your automation. Input the URL from the \"your webhook URL\" section in Zapier.",[1570,25915,25916],{},"Learn more about configuring the \"Webhooks by Zapier\" trigger:",[1729,25918,25919],{},[1577,25920,25921,25924],{},[1580,25922,25923],{},"Set the \"trigger event\" to \"catch raw webhook\", press continue.",[1580,25925,25926],{},"Save the URL in the \"your webhook URL\" section for later.",[1570,25928,25929],{},"To use data within your Zap, you'll need to first process the data:",[1729,25931,25932],{},[2191,25933,25934,25940],{},[1580,25935,25936,25939],{},[1681,25937,25938],{},"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.",[1580,25941,25942,25944],{},[1681,25943,2255],{}," - Follow the instructions below to configure the \"Formatter by Zapier\" action.",[1570,25946,25947],{},"To configure the \"Formatter by Zapier\" step, follow the steps below:",[1729,25949,25950],{},[2191,25951,25952,25958,25964,25969,25975,25981,25987],{},[1580,25953,25954,25957],{},[1681,25955,25956],{},"Action event"," - Set to \"text\".",[1580,25959,25960,25963],{},[1681,25961,25962],{},"Transform"," - Set to \"split text\".",[1580,25965,25966,25968],{},[1681,25967,15641],{}," - Click \"+\" and set to \"raw body\".",[1580,25970,25971,25974],{},[1681,25972,25973],{},"Separator"," - Click into the field and set to \"single speech mark\".",[1580,25976,25977,25980],{},[1681,25978,25979],{},"Segment index"," - Set to \"all (as separate fields)\".",[1580,25982,25983,25986],{},[1681,25984,25985],{},"Continue"," - click continue.",[1580,25988,25989,25991],{},[1681,25990,13999],{}," - Click \"test step\".",[2227,25993],{"src":25994,"alt":25995},"\u002Fdocs\u002Fguides\u002Fzapier-formatter-step.jpg","Configure the formatter by Zapier step",[1562,25997,2410],{"id":2409},[1567,25999],{},[1570,26001,26002],{},"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.",[1570,26004,26005,26006,26009],{},"If the desired results have not been achieved, review the ",[1596,26007,26008],{"href":2425},"Run Reports"," within axiom.ai, or the Zap runs section within Zapier.",[1562,26011,8324],{"id":8323},[1567,26013],{},[1611,26015,26017],{"id":26016},"sending-scraper-data-from-an-axiomai-automation-to-zapier-for-processing","Sending scraper data from an axiom.ai automation to Zapier for processing",[1567,26019],{},[1570,26021,26022],{},"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.",[1729,26024,26025],{},[2191,26026,26027,26038],{},[1580,26028,26029,26031,26032,26035,26036,2862],{},[1681,26030,321],{}," - Create a new axiom.ai automation, add a ",[1596,26033,26034],{"href":619},"scraping step",". In this example, we will be using the ",[1596,26037,1035],{"href":1036},[1580,26039,26040,26042,26043,26045,26046,22178],{},[1681,26041,9311],{}," - Following the instructions above, configure your Zap to be triggered by incoming webhooks. Add a ",[1596,26044,9311],{"href":1194}," step and use the \"Insert data\" option to insert the ",[1740,26047,1845],{},[1570,26049,26050,26051,26054],{},"Follow the steps from the ",[1596,26052,25884],{"href":26053},"#triggering-a-zap-using-an-axiomai-automation"," to learn how to process the data that you send to your Zap.",[1611,26056,26058],{"id":26057},"write-data-to-excel","Write data to Excel",[1567,26060],{},[1570,26062,26063,26064,26067],{},"To write data to Excel, follow the steps in ",[1596,26065,25884],{"href":26066},"\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:",[1729,26069,26070],{},[2191,26071,26072,26077,26082,26088],{},[1580,26073,26074,26076],{},[1681,26075,29],{}," - Search for \"Microsoft Excel\" and add a new step to your Zap.",[1580,26078,26079,26081],{},[1681,26080,25956],{}," - Set this to \"Add Row\".",[1580,26083,26084,26087],{},[1681,26085,26086],{},"Set up"," - Follow the instructions in the Zap to connect your account and configure your step.",[1580,26089,26090,26092],{},[1681,26091,2255],{}," - To configure your data, head into the \"Configure\" tab. Click the \"+\" button beside the \"Column\" inputs to select your variables.",[1570,26094,26095],{},"To test, trigger your automation within axiom.ai",[1562,26097,2430],{"id":2429},[1567,26099],{},[1570,26101,26102],{},"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":1640,"searchDepth":1641,"depth":1641,"links":26104},[26105,26106,26107,26108,26112],{"id":2181,"depth":1644,"text":2182},{"id":25883,"depth":1644,"text":25884},{"id":2409,"depth":1644,"text":2410},{"id":8323,"depth":1644,"text":8324,"children":26109},[26110,26111],{"id":26016,"depth":1641,"text":26017},{"id":26057,"depth":1641,"text":26058},{"id":2429,"depth":1644,"text":2430},"How to build an automation that scrapes data from a webpage and connects to Zapier via a webhook.",{"video":26115,"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":26116,"platfrom":26117},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FV3I7w8fnO88?rel=0&amp;",[2463,2464,2688,22655],[783],"\u002Fguides\u002Fzapier",{"title":25845,"description":26113},"guides\u002Fzapier","mvO_R6ltR7wBcrltiSx-f3NdEw7mmmsEToYoJLF1ht8",{"id":26123,"title":26124,"body":26125,"date":2676,"description":26297,"extension":1653,"meta":26298,"navigation":1657,"order":1644,"path":26302,"seo":26303,"stem":26304,"__hash__":26305},"guides\u002Fguides\u002Fzapier-forms.md","How to automate data entry without an API using Zapier",{"type":1555,"value":26126,"toc":26289},[26127,26129,26145,26147,26151,26162,26166,26171,26175,26177,26181,26190,26259,26263,26270,26272,26276,26278,26280],[1567,26128],{},[1570,26130,26131,26132,26135,26136,26141,26142,1696],{},"This Zapier data entry template is ",[1681,26133,26134],{},"triggered by a webhook"," that passes data in a 2D array from our ",[1596,26137,26140],{"href":26138,"rel":26139},"https:\u002F\u002Fzapier.com\u002Fapps\u002Faxiomai\u002Fintegrations",[3874],"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 ",[1681,26143,26144],{},"no API integration option",[1558,26146],{},[1562,26148,26150],{"id":26149},"get-started-set-up-your-zap","Get started: Set up your Zap",[1570,26152,26153,26154,26157,26158],{},"In fact, we recommend not setting up your Zap first. Instead, prioritize creating and thoroughly testing your bot. Utilize the ",[1681,26155,26156],{},"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 ",[1596,26159,26161],{"href":26160},"\u002Fdocs\u002Fworking-with-zapier-and-webhooks#select-axiom-s-zapier-app-within-zapier","Zapier documentation page.",[1562,26163,26165],{"id":26164},"install-the-zapier-data-entry-bot","Install the Zapier data entry bot",[1570,26167,26168,26169,2731],{},"To install this Zapier data entry bot click ",[1681,26170,7475],{},[1570,26172,21828,26173,1696],{},[1681,26174,20576],{},[1570,26176,1720],{},[1562,26178,26180],{"id":26179},"configure-your-zapier-data-entry-bot-in-just-a-few-steps","Configure your Zapier data entry bot in just a few steps",[1570,26182,26183,26184,26187,26188,8949],{},"We've provided a set of example steps within ",[1740,26185,26186],{},"Step 2.0 - Loop through data",". You can further customize this bot by adding additional ",[1596,26189,1543],{"href":1542},[1729,26191,26192],{},[1577,26193,26194,26211],{},[1580,26195,26196,1738,26198,26200,26201,26203,26204,1696],{},[1681,26197,1737],{},[1740,26199,1110],{},": Toggle on ",[1740,26202,25750],{}," and input: ",[1681,26205,26206,26207,26210],{},"\"[[Row 1 colA, Row 1 colB, Row 1 colC], ",[2361,26208,26209],{},"Row 2 colA, Row 2 colB, Row 2 colC","]\"",[1580,26212,26213,1738,26215,5346,26217],{},[1681,26214,1761],{},[1740,26216,667],{},[1577,26218,26219,26236,26250],{},[1580,26220,26221,1738,26223,26225,26226,26228,26229,2045,26231,1784,26233,1696],{},[1681,26222,1770],{},[1740,26224,8028],{},": Set ",[1740,26227,1803],{}," to the input field and ",[1740,26230,2587],{},[1681,26232,22402],{},[1740,26234,26235],{},"[webhook-data]",[1580,26237,26238,1738,26240,26225,26242,26228,26244,2045,26246,1784,26248,1696],{},[1681,26239,1793],{},[1740,26241,8028],{},[1740,26243,1803],{},[1740,26245,2587],{},[1681,26247,22402],{},[1740,26249,26235],{},[1580,26251,26252,1738,26254,26225,26256,26258],{},[1681,26253,1818],{},[1740,26255,8051],{},[1740,26257,1803],{}," to the submit form button.",[1562,26260,26262],{"id":26261},"run-your-zapier-data-entry-bot","Run your Zapier data entry bot",[1570,26264,26265,26266],{},"Test your bot with sample data before proceeding to test your ",[1596,26267,26269],{"href":26268},"\u002Fdocs\u002Fworking-with-zapier-and-webhooks#test-the-zapier-axiom-trigger","Zapier trigger.",[1562,26271,1964],{"id":1963},[1570,26273,1967,26274,1972],{},[1596,26275,14268],{"href":1970},[1562,26277,1398],{"id":1975},[1570,26279,1978],{},[1570,26281,2127,26282,26284,26285],{},[1596,26283,2130],{"href":82},"\nTo learn more about using triggering Axiom with Zaps read our ",[1596,26286,26288],{"href":26287},"\u002Fdocs\u002Fworking-with-zapier-and-webhooks","Zapier page.",{"title":1640,"searchDepth":1641,"depth":1641,"links":26290},[26291,26292,26293,26294,26295,26296],{"id":26149,"depth":1644,"text":26150},{"id":26164,"depth":1644,"text":26165},{"id":26179,"depth":1644,"text":26180},{"id":26261,"depth":1644,"text":26262},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"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":1657,"read":14595,"level":17711,"video":26299,"templateId":6297,"type":2152,"format":2153,"intent_type":3384,"intent":8904,"tags":26300,"platfrom":26301},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FBNLTBsEYXu8",[2463,2464,2688,22655],[783],"\u002Fguides\u002Fzapier-forms",{"title":26124,"description":26297},"guides\u002Fzapier-forms","kmzGzPGXZeG3tTRcZ51BWD0KQ5Nr3x1V5cgOZB4W1OM",{"id":26307,"title":26308,"body":26309,"date":1651,"description":26579,"extension":1653,"meta":26580,"navigation":1657,"order":1651,"path":26583,"seo":26584,"stem":26585,"__hash__":26586},"guides\u002Fguides\u002Fzapier-tables.md","How to automate Zapier Tables with axiom.ai",{"type":1555,"value":26310,"toc":26570},[26311,26313,26324,26326,26328,26330,26338,26341,26361,26366,26370,26372,26375,26379,26381,26384,26387,26406,26408,26416,26419,26431,26433,26465,26467,26470,26474,26476,26479,26503,26506,26529,26532,26534,26536,26539,26542,26544,26558,26560,26562,26565,26567],[1567,26312],{},[1570,26314,26315,26320,26321,26323],{},[1596,26316,26319],{"href":26317,"rel":26318},"https:\u002F\u002Fzapier.com\u002F",[3874],"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 ",[1596,26322,783],{"href":4911}," can be used.",[1562,26325,2182],{"id":2181},[1567,26327],{},[1570,26329,22682],{},[2191,26331,26332,26335],{},[1580,26333,26334],{},"Sign up to Zapier.",[1580,26336,26337],{},"Create a new Table by clicking \"Create\" and selecting \"Table\" - create this to meet your own requirements.",[1570,26339,26340],{},"To trigger your axiom.ai automations, you'll need the following:",[1729,26342,26343],{},[2191,26344,26345,26351,26355],{},[1580,26346,26347,3415,26349,1696],{},[1681,26348,1628],{},[1596,26350,2201],{"href":2200},[1580,26352,26353,3422],{},[1681,26354,2206],{},[1580,26356,26357,3427,26359,1696],{},[1681,26358,2212],{},[1740,26360,2216],{},[1570,26362,26363],{},[2441,26364,26365],{},"You may require a Zapier subscription and an axiom.ai subscription to use some of the steps within this guide.",[1562,26367,26369],{"id":26368},"working-with-zapier-tables-data-in-axiomai","Working with Zapier Tables data in axiom.ai",[1567,26371],{},[1570,26373,26374],{},"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.",[1611,26376,26378],{"id":26377},"create-a-new-record","Create a new record",[1567,26380],{},[1570,26382,26383],{},"To get started, create your automation as normal, once you are ready to send the data to your Zapier Table, continue this guide.",[1570,26385,26386],{},"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:",[1729,26388,26389],{},[2191,26390,26391,26396,26400],{},[1580,26392,26393,26395],{},[1681,26394,25898],{}," - Create a new Zap by navigating to Zapier, and clicking \"Create\".",[1580,26397,26398,25905],{},[1681,26399,25904],{},[1580,26401,26402,25910,26404,25913],{},[1681,26403,9311],{},[1596,26405,9311],{"href":1194},[1570,26407,25916],{},[1729,26409,26410],{},[1577,26411,26412,26414],{},[1580,26413,25923],{},[1580,26415,25926],{},[1570,26417,26418],{},"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:",[1729,26420,26421],{},[2191,26422,26423,26427],{},[1580,26424,26425,25939],{},[1681,26426,25938],{},[1580,26428,26429,25944],{},[1681,26430,2255],{},[1570,26432,25947],{},[1729,26434,26435],{},[2191,26436,26437,26441,26445,26449,26453,26457,26461],{},[1580,26438,26439,25957],{},[1681,26440,25956],{},[1580,26442,26443,25963],{},[1681,26444,25962],{},[1580,26446,26447,25968],{},[1681,26448,15641],{},[1580,26450,26451,25974],{},[1681,26452,25973],{},[1580,26454,26455,25980],{},[1681,26456,25979],{},[1580,26458,26459,25986],{},[1681,26460,25985],{},[1580,26462,26463,25991],{},[1681,26464,13999],{},[2227,26466],{"src":25994,"alt":25995},[1570,26468,26469],{},"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.",[1611,26471,26473],{"id":26472},"send-data-to-axiomai-automation","Send data to axiom.ai automation",[1567,26475],{},[1570,26477,26478],{},"To get started, create a new \"Zap\":",[1729,26480,26481],{},[2191,26482,26483,26488,26493,26498],{},[1580,26484,26485,26487],{},[1681,26486,25938],{}," - Add a \"Zapier Tables\" action to your Zap.",[1580,26489,26490,26492],{},[1681,26491,2255],{}," - 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.",[1580,26494,26495,26497],{},[1681,26496,25938],{}," - Add an \"axiom.ai\" action using the search functionality.",[1580,26499,26500,26502],{},[1681,26501,2255],{}," - 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.",[1570,26504,26505],{},"Now, set up your axiom.ai automation:",[1729,26507,26508],{},[2191,26509,26510,26516,26524],{},[1580,26511,26512,26515],{},[1681,26513,26514],{},"Create"," - Click \"+ New Automation\" to create a new automation.",[1580,26517,26518,26521,26522,2862],{},[1681,26519,26520],{},"Receive data"," - Add a ",[1596,26523,1110],{"href":1111},[1580,26525,26526,26528],{},[1681,26527,2255],{}," - Input test data into the \"Test data\" field, this will assist in the testing.",[1570,26530,26531],{},"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\".",[1562,26533,2410],{"id":2409},[1567,26535],{},[1570,26537,26538],{},"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.",[1570,26540,26541],{},"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.",[1570,26543,25770],{},[1577,26545,26546,26550,26554],{},[1580,26547,26548],{},[1596,26549,4933],{"href":1487},[1580,26551,26552],{},[1596,26553,1408],{"href":1409},[1580,26555,26556],{},[1596,26557,25785],{"href":1405},[1562,26559,2430],{"id":2429},[1567,26561],{},[1570,26563,26564],{},"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.",[1567,26566],{},[1570,26568,26569],{},"Information accurate as of December 2024.",{"title":1640,"searchDepth":1641,"depth":1641,"links":26571},[26572,26573,26577,26578],{"id":2181,"depth":1644,"text":2182},{"id":26368,"depth":1644,"text":26369,"children":26574},[26575,26576],{"id":26377,"depth":1641,"text":26378},{"id":26472,"depth":1641,"text":26473},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},"Learn how to automatically send data to your Zapier Tables databases and trigger your axiom.ai automations using triggers.",{"pinned":1657,"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":26581,"platfrom":26582},[2463,2464,2688,22655],[783,26319],"\u002Fguides\u002Fzapier-tables",{"title":26308,"description":26579},"guides\u002Fzapier-tables","Kxe6B04quaLH01fQuJeN1B7QyP0-n7ljpFRpw_yCDFU",[26588,27038,27251,27476],{"id":25310,"title":25311,"body":26589,"date":1651,"description":25818,"extension":1653,"meta":27034,"navigation":1657,"order":1651,"path":25822,"seo":27037,"stem":25824,"__hash__":25825},{"type":1555,"value":26590,"toc":27024},[26591,26593,26597,26599,26601,26621,26623,26625,26627,26639,26641,26645,26657,26661,26663,26665,26675,26681,26947,26954,26958,26960,26962,26980,26982,26986,26988,26990,26992,26994,27008,27010,27017,27022],[1567,26592],{},[1570,26594,25318,26595,25322],{},[1596,26596,10504],{"href":25321},[1562,26598,2182],{"id":2181},[1570,26600,25327],{},[1729,26602,26603],{},[1577,26604,26605,26611,26615],{},[1580,26606,26607,2197,26609,1696],{},[1740,26608,1628],{},[1596,26610,2201],{"href":2200},[1580,26612,26613,2207],{},[1740,26614,2206],{},[1580,26616,26617,2213,26619,1696],{},[1740,26618,2212],{},[1740,26620,2216],{},[1570,26622,25350],{},[1562,26624,25354],{"id":25353},[1570,26626,25357],{},[1729,26628,26629],{},[2191,26630,26631,26635],{},[1580,26632,26633,25366],{},[1740,26634,2212],{},[1580,26636,26637,25371],{},[1740,26638,17959],{},[1611,26640,25375],{"id":25374},[1570,26642,6680,26643,25380],{},[1596,26644,9311],{"href":1194},[1729,26646,26647],{},[2191,26648,26649,26653,26655],{},[1580,26650,9937,26651,2862],{},[1596,26652,9311],{"href":1194},[1580,26654,25391],{},[1580,26656,25394],{},[1570,26658,25397,26659,13970],{},[1596,26660,9229],{"href":1373},[1611,26662,12609],{"id":25402},[1570,26664,25405],{},[2191,26666,26667,26669,26671,26673],{},[1580,26668,25410],{},[1580,26670,25413],{},[1580,26672,25416],{},[1580,26674,25419],{},[1570,26676,22742,26677,25424,26679,25427],{},[1596,26678,3928],{"href":1226},[1740,26680,11239],{},[2353,26682,26683],{"className":2390,"code":25430,"language":2392,"meta":1640,"style":1640},[1740,26684,26685,26697,26709,26719,26725,26747,26751,26755,26771,26777,26791,26799,26803,26809,26823,26831,26835,26851,26855,26859,26869,26881,26887,26891,26895,26911,26919,26927,26939,26943],{"__ignoreMap":1640},[2361,26686,26687,26689,26691,26693,26695],{"class":2363,"line":2364},[2361,26688,3942],{"class":3616},[2361,26690,25439],{"class":3512},[2361,26692,3948],{"class":3616},[2361,26694,25444],{"class":2371},[2361,26696,3954],{"class":2402},[2361,26698,26699,26701,26703,26705,26707],{"class":2363,"line":1644},[2361,26700,3942],{"class":3616},[2361,26702,25453],{"class":3512},[2361,26704,3948],{"class":3616},[2361,26706,25458],{"class":2371},[2361,26708,3954],{"class":2402},[2361,26710,26711,26713,26715,26717],{"class":2363,"line":1641},[2361,26712,3942],{"class":3616},[2361,26714,23725],{"class":3512},[2361,26716,3948],{"class":3616},[2361,26718,4018],{"class":2402},[2361,26720,26721,26723],{"class":2363,"line":3525},[2361,26722,11117],{"class":2371},[2361,26724,25477],{"class":2402},[2361,26726,26727,26729,26731,26733,26735,26737,26739,26741,26743,26745],{"class":2363,"line":3531},[2361,26728,11141],{"class":2371},[2361,26730,3660],{"class":2402},[2361,26732,1813],{"class":3512},[2361,26734,3634],{"class":2402},[2361,26736,10467],{"class":3512},[2361,26738,25492],{"class":2402},[2361,26740,18879],{"class":3512},[2361,26742,3634],{"class":2402},[2361,26744,25499],{"class":3512},[2361,26746,25502],{"class":2402},[2361,26748,26749],{"class":2363,"line":3603},[2361,26750,18415],{"class":2402},[2361,26752,26753],{"class":2363,"line":3682},[2361,26754,3528],{"emptyLinePlaceholder":1657},[2361,26756,26757,26759,26761,26763,26765,26767,26769],{"class":2363,"line":3688},[2361,26758,3942],{"class":3616},[2361,26760,25517],{"class":4003},[2361,26762,3948],{"class":3616},[2361,26764,4009],{"class":3616},[2361,26766,4012],{"class":2402},[2361,26768,4015],{"class":3616},[2361,26770,4018],{"class":2402},[2361,26772,26773,26775],{"class":2363,"line":3694},[2361,26774,4023],{"class":3616},[2361,26776,4018],{"class":2402},[2361,26778,26779,26781,26783,26785,26787,26789],{"class":2363,"line":3717},[2361,26780,4030],{"class":3616},[2361,26782,3723],{"class":3512},[2361,26784,3948],{"class":3616},[2361,26786,4037],{"class":3616},[2361,26788,4040],{"class":4003},[2361,26790,25548],{"class":2402},[2361,26792,26793,26795,26797],{"class":2363,"line":3770},[2361,26794,4048],{"class":2402},[2361,26796,4051],{"class":2371},[2361,26798,4054],{"class":2402},[2361,26800,26801],{"class":2363,"line":3784},[2361,26802,4059],{"class":2402},[2361,26804,26805,26807],{"class":2363,"line":3160},[2361,26806,23005],{"class":2371},[2361,26808,25477],{"class":2402},[2361,26810,26811,26813,26815,26817,26819,26821],{"class":2363,"line":3808},[2361,26812,25571],{"class":2371},[2361,26814,3625],{"class":2402},[2361,26816,18487],{"class":2371},[2361,26818,25578],{"class":2402},[2361,26820,4075],{"class":2371},[2361,26822,4054],{"class":2402},[2361,26824,26825,26827,26829],{"class":2363,"line":3817},[2361,26826,25587],{"class":2371},[2361,26828,3625],{"class":2402},[2361,26830,18504],{"class":2371},[2361,26832,26833],{"class":2363,"line":4160},[2361,26834,4092],{"class":2402},[2361,26836,26837,26839,26841,26843,26845,26847,26849],{"class":2363,"line":4178},[2361,26838,4097],{"class":2402},[2361,26840,11201],{"class":3512},[2361,26842,1696],{"class":2402},[2361,26844,11206],{"class":4003},[2361,26846,4169],{"class":2402},[2361,26848,23052],{"class":4003},[2361,26850,25612],{"class":2402},[2361,26852,26853],{"class":2363,"line":4186},[2361,26854,4138],{"class":2402},[2361,26856,26857],{"class":2363,"line":4192},[2361,26858,23064],{"class":2402},[2361,26860,26861,26863,26865,26867],{"class":2363,"line":4197},[2361,26862,4148],{"class":3616},[2361,26864,4151],{"class":2402},[2361,26866,4154],{"class":3616},[2361,26868,4157],{"class":2402},[2361,26870,26871,26873,26875,26877,26879],{"class":2363,"line":4218},[2361,26872,4163],{"class":2402},[2361,26874,4166],{"class":4003},[2361,26876,4169],{"class":2402},[2361,26878,4172],{"class":2371},[2361,26880,4512],{"class":2402},[2361,26882,26883,26885],{"class":2363,"line":4230},[2361,26884,4181],{"class":3616},[2361,26886,3954],{"class":2402},[2361,26888,26889],{"class":2363,"line":4242},[2361,26890,4189],{"class":2402},[2361,26892,26893],{"class":2363,"line":4257},[2361,26894,4143],{"class":2402},[2361,26896,26897,26899,26901,26903,26905,26907,26909],{"class":2363,"line":4263},[2361,26898,4030],{"class":3616},[2361,26900,4202],{"class":3512},[2361,26902,3948],{"class":3616},[2361,26904,4037],{"class":3616},[2361,26906,4209],{"class":2402},[2361,26908,4212],{"class":4003},[2361,26910,4215],{"class":2402},[2361,26912,26913,26915,26917],{"class":2363,"line":4269},[2361,26914,4221],{"class":2402},[2361,26916,4224],{"class":4003},[2361,26918,4227],{"class":2402},[2361,26920,26921,26923,26925],{"class":2363,"line":4274},[2361,26922,4233],{"class":2402},[2361,26924,4236],{"class":3616},[2361,26926,4239],{"class":2402},[2361,26928,26929,26931,26933,26935,26937],{"class":2363,"line":6268},[2361,26930,4221],{"class":2402},[2361,26932,4166],{"class":4003},[2361,26934,4169],{"class":2402},[2361,26936,4251],{"class":2371},[2361,26938,4254],{"class":2402},[2361,26940,26941],{"class":2363,"line":6273},[2361,26942,4260],{"class":2402},[2361,26944,26945],{"class":2363,"line":2947},[2361,26946,4266],{"class":2402},[1570,26948,25711,26949,25714,26951,13823],{},[1740,26950,11239],{},[1596,26952,25719],{"href":25717,"rel":26953},[3874],[1570,26955,25397,26956,13970],{},[1596,26957,9229],{"href":1373},[1562,26959,25727],{"id":25726},[1570,26961,25730],{},[1729,26963,26964],{},[1577,26965,26966,26974],{},[1580,26967,26968,1738,26970,2246,26972,2862],{},[1681,26969,1737],{},[1740,26971,25741],{},[1596,26973,25741],{"href":1111},[1580,26975,26976,1738,26978,25751],{},[1681,26977,1761],{},[1740,26979,25750],{},[1570,26981,25754],{},[1570,26983,26984],{},[2441,26985,25759],{},[1562,26987,2410],{"id":2409},[1570,26989,25764],{},[1570,26991,25767],{},[1570,26993,25770],{},[1577,26995,26996,27000,27004],{},[1580,26997,26998],{},[1596,26999,4933],{"href":1487},[1580,27001,27002],{},[1596,27003,1408],{"href":1409},[1580,27005,27006],{},[1596,27007,25785],{"href":1405},[1562,27009,2430],{"id":2429},[1570,27011,25790,27012,25794,27014,1696],{},[1596,27013,22674],{"href":25793},[1596,27015,25798],{"href":4943,"rel":27016},[3874],[1570,27018,25801,27019,1696],{},[1596,27020,25798],{"href":4943,"rel":27021},[3874],[2445,27023,25807],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":27025},[27026,27027,27031,27032,27033],{"id":2181,"depth":1644,"text":2182},{"id":25353,"depth":1644,"text":25354,"children":27028},[27029,27030],{"id":25374,"depth":1641,"text":25375},{"id":25402,"depth":1641,"text":12609},{"id":25726,"depth":1644,"text":25727},{"id":2409,"depth":1644,"text":2410},{"id":2429,"depth":1644,"text":2430},{"type":2152,"format":2153,"intent_type":2154,"intent":2461,"tags":27035,"platfrom":27036},[2463,2464],[3387],{"title":25311,"description":25818},{"id":25844,"title":25845,"body":27039,"date":1651,"description":26113,"extension":1653,"meta":27247,"navigation":1657,"order":1651,"path":26118,"seo":27250,"stem":26120,"__hash__":26121},{"type":1555,"value":27040,"toc":27237},[27041,27043,27045,27047,27049,27051,27053,27073,27075,27077,27079,27097,27099,27107,27109,27121,27123,27155,27157,27159,27161,27163,27167,27169,27171,27173,27175,27177,27197,27201,27203,27205,27209,27229,27231,27233,27235],[1567,27042],{},[1570,27044,25852],{},[1558,27046],{},[1562,27048,2182],{"id":2181},[1567,27050],{},[1570,27052,2187],{},[1729,27054,27055],{},[2191,27056,27057,27063,27067],{},[1580,27058,27059,3415,27061,1696],{},[1681,27060,1628],{},[1596,27062,2201],{"href":2200},[1580,27064,27065,3422],{},[1681,27066,2206],{},[1580,27068,27069,3427,27071,1696],{},[1681,27070,2212],{},[1740,27072,2216],{},[1562,27074,25884],{"id":25883},[1567,27076],{},[1570,27078,25889],{},[1729,27080,27081],{},[2191,27082,27083,27087,27091],{},[1580,27084,27085,25899],{},[1681,27086,25898],{},[1580,27088,27089,25905],{},[1681,27090,25904],{},[1580,27092,27093,25910,27095,25913],{},[1681,27094,9311],{},[1596,27096,9311],{"href":1194},[1570,27098,25916],{},[1729,27100,27101],{},[1577,27102,27103,27105],{},[1580,27104,25923],{},[1580,27106,25926],{},[1570,27108,25929],{},[1729,27110,27111],{},[2191,27112,27113,27117],{},[1580,27114,27115,25939],{},[1681,27116,25938],{},[1580,27118,27119,25944],{},[1681,27120,2255],{},[1570,27122,25947],{},[1729,27124,27125],{},[2191,27126,27127,27131,27135,27139,27143,27147,27151],{},[1580,27128,27129,25957],{},[1681,27130,25956],{},[1580,27132,27133,25963],{},[1681,27134,25962],{},[1580,27136,27137,25968],{},[1681,27138,15641],{},[1580,27140,27141,25974],{},[1681,27142,25973],{},[1580,27144,27145,25980],{},[1681,27146,25979],{},[1580,27148,27149,25986],{},[1681,27150,25985],{},[1580,27152,27153,25991],{},[1681,27154,13999],{},[2227,27156],{"src":25994,"alt":25995},[1562,27158,2410],{"id":2409},[1567,27160],{},[1570,27162,26002],{},[1570,27164,26005,27165,26009],{},[1596,27166,26008],{"href":2425},[1562,27168,8324],{"id":8323},[1567,27170],{},[1611,27172,26017],{"id":26016},[1567,27174],{},[1570,27176,26022],{},[1729,27178,27179],{},[2191,27180,27181,27189],{},[1580,27182,27183,26031,27185,26035,27187,2862],{},[1681,27184,321],{},[1596,27186,26034],{"href":619},[1596,27188,1035],{"href":1036},[1580,27190,27191,26042,27193,26045,27195,22178],{},[1681,27192,9311],{},[1596,27194,9311],{"href":1194},[1740,27196,1845],{},[1570,27198,26050,27199,26054],{},[1596,27200,25884],{"href":26053},[1611,27202,26058],{"id":26057},[1567,27204],{},[1570,27206,26063,27207,26067],{},[1596,27208,25884],{"href":26066},[1729,27210,27211],{},[2191,27212,27213,27217,27221,27225],{},[1580,27214,27215,26076],{},[1681,27216,29],{},[1580,27218,27219,26081],{},[1681,27220,25956],{},[1580,27222,27223,26087],{},[1681,27224,26086],{},[1580,27226,27227,26092],{},[1681,27228,2255],{},[1570,27230,26095],{},[1562,27232,2430],{"id":2429},[1567,27234],{},[1570,27236,26102],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":27238},[27239,27240,27241,27242,27246],{"id":2181,"depth":1644,"text":2182},{"id":25883,"depth":1644,"text":25884},{"id":2409,"depth":1644,"text":2410},{"id":8323,"depth":1644,"text":8324,"children":27243},[27244,27245],{"id":26016,"depth":1641,"text":26017},{"id":26057,"depth":1641,"text":26058},{"id":2429,"depth":1644,"text":2430},{"video":26115,"type":2152,"format":1729,"intent_type":2154,"intent":2461,"tags":27248,"platfrom":27249},[2463,2464,2688,22655],[783],{"title":25845,"description":26113},{"id":13116,"title":13117,"body":27252,"date":1651,"description":13124,"extension":1653,"meta":27472,"navigation":1657,"order":1651,"path":13399,"seo":27475,"stem":13401,"__hash__":13402},{"type":1555,"value":27253,"toc":27465},[27254,27256,27258,27260,27262,27264,27266,27268,27270,27272,27274,27282,27284,27288,27293,27298,27303,27308,27310,27312,27314,27436,27438,27440,27442,27444,27461,27463],[1567,27255],{},[1570,27257,13124],{},[1570,27259,13127],{},[1570,27261,13130],{},[1562,27263,13134],{"id":13133},[1570,27265,13137],{},[1570,27267,13140],{},[2227,27269],{"src":13143,"alt":13144},[1562,27271,13148],{"id":13147},[1570,27273,13151],{},[1577,27275,27276,27278,27280],{},[1580,27277,13156],{},[1580,27279,13159],{},[1580,27281,13162],{},[1562,27283,13166],{"id":13165},[1570,27285,13169,27286,13173],{},[1596,27287,13172],{"href":1640},[1570,27289,13176,27290,13182],{},[1596,27291,13181],{"href":13179,"rel":27292},[3874],[1570,27294,13185,27295,13190],{},[1596,27296,1181],{"href":13188,"rel":27297},[3874],[1570,27299,13193,27300,13198],{},[1596,27301,1185],{"href":13196,"rel":27302},[3874],[1570,27304,13201,27305,13205],{},[1596,27306,1074],{"href":13179,"rel":27307},[3874],[2227,27309],{"src":13208,"alt":13209},[1562,27311,13213],{"id":13212},[1570,27313,13216],{},[1729,27315,27316],{},[1577,27317,27318,27344],{},[1580,27319,27320,1738,27322,27324],{},[1681,27321,1994],{},[1740,27323,1742],{},[1577,27325,27326,27330,27334,27340],{},[1580,27327,27328,1750],{},[1740,27329,1749],{},[1580,27331,27332,9563],{},[1740,27333,1755],{},[1580,27335,27336,12859,27338,1696],{},[1740,27337,8780],{},[1740,27339,8784],{},[1580,27341,27342,13247],{},[1740,27343,6877],{},[1580,27345,27346,1738,27348,27350,27360],{},[1681,27347,2542],{},[1740,27349,667],{},[1577,27351,27352],{},[1580,27353,27354,1780,27356,1784,27358,1696],{},[1740,27355,667],{},[1740,27357,1841],{},[1740,27359,1787],{},[1577,27361,27362,27382,27398],{},[1580,27363,27364,1738,27366,27368],{},[1681,27365,2551],{},[1740,27367,13272],{},[1577,27369,27370,27376],{},[1580,27371,27372,13280,27374,1696],{},[1740,27373,13279],{},[1740,27375,13283],{},[1580,27377,27378,1780,27380,13290],{},[1740,27379,2109],{},[1740,27381,1841],{},[1580,27383,27384,1738,27386,27388],{},[1681,27385,2569],{},[1740,27387,13297],{},[1577,27389,27390],{},[1580,27391,27392,1780,27394,13306,27396,2862],{},[1740,27393,2109],{},[1740,27395,1841],{},[1740,27397,13272],{},[1580,27399,27400,1738,27402,27404,27414],{},[1681,27401,2577],{},[1740,27403,13315],{},[1577,27405,27406],{},[1580,27407,27408,1780,27410,13306,27412,2862],{},[1740,27409,667],{},[1740,27411,1841],{},[1740,27413,13297],{},[1577,27415,27416],{},[1580,27417,27418,1738,27420,27422],{},[1681,27419,12956],{},[1740,27421,5254],{},[1577,27423,27424,27428],{},[1580,27425,27426,13340],{},[1740,27427,1803],{},[1580,27429,27430,1810,27432,13347,27434,13350],{},[1740,27431,269],{},[1740,27433,5266],{},[1740,27435,13297],{},[1570,27437,13353],{},[1562,27439,2430],{"id":2429},[1570,27441,13358],{},[1570,27443,13361],{},[1577,27445,27446,27451,27456],{},[1580,27447,27448],{},[1596,27449,13369],{"href":13188,"rel":27450},[3874],[1580,27452,27453],{},[1596,27454,13375],{"href":13196,"rel":27455},[3874],[1580,27457,27458],{},[1596,27459,13381],{"href":13179,"rel":27460},[3874],[1570,27462,13384],{},[1570,27464,13387],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":27466},[27467,27468,27469,27470,27471],{"id":13133,"depth":1644,"text":13134},{"id":13147,"depth":1644,"text":13148},{"id":13165,"depth":1644,"text":13166},{"id":13212,"depth":1644,"text":13213},{"id":2429,"depth":1644,"text":2430},{"pinned":1657,"metaTitle":13396,"type":2152,"format":1729,"intent_type":3384,"intent":2461,"tags":27473,"platfrom":27474},[2688],[3387],{"title":13117,"description":13124},{"id":21788,"title":21789,"body":27477,"date":2676,"description":21985,"extension":1653,"meta":27651,"navigation":1657,"order":1651,"path":17430,"seo":27654,"stem":21991,"__hash__":21992},{"type":1555,"value":27478,"toc":27643},[27479,27481,27483,27485,27489,27491,27497,27499,27505,27509,27511,27513,27571,27573,27575,27577,27581,27583,27585,27639],[1567,27480],{},[1570,27482,21796],{},[1558,27484],{},[1570,27486,21801,27487],{},[1596,27488,21804],{"href":16553},[1562,27490,1676],{"id":1675},[1570,27492,1679,27493,21811,27495,1696],{},[1681,27494,1683],{},[1681,27496,1691],{},[1562,27498,21817],{"id":21816},[1570,27500,21820,27501,21823,27503,1711],{},[1681,27502,1706],{},[1681,27504,1710],{},[1570,27506,21828,27507,1696],{},[1681,27508,1717],{},[1570,27510,1720],{},[1562,27512,21836],{"id":21835},[1729,27514,27515],{},[1577,27516,27517,27543],{},[1580,27518,27519,1738,27521,27523],{},[1681,27520,1994],{},[1740,27522,14923],{},[1577,27524,27525,27529,27535,27539],{},[1580,27526,27527,21853],{},[1740,27528,5537],{},[1580,27530,27531,3625,27533,21860],{},[1740,27532,1803],{},[1596,27534,20947],{"href":1387},[1580,27536,27537,21865],{},[1740,27538,17488],{},[1580,27540,27541,21870],{},[1740,27542,1809],{},[1580,27544,27545,1738,27547,27549],{},[1681,27546,2542],{},[1740,27548,4924],{},[1577,27550,27551,27555,27559,27565],{},[1580,27552,27553,1750],{},[1740,27554,1749],{},[1580,27556,27557,1902],{},[1740,27558,1755],{},[1580,27560,27561,1908,27563,1696],{},[1740,27562,1907],{},[1740,27564,15065],{},[1580,27566,27567,1810,27569,1696],{},[1740,27568,16757],{},[1740,27570,7621],{},[1562,27572,21902],{"id":21901},[1570,27574,21905],{},[1562,27576,1964],{"id":1963},[1570,27578,1967,27579,1972],{},[1596,27580,1971],{"href":1970},[1562,27582,1398],{"id":1975},[1570,27584,1978],{},[1729,27586,27587],{},[1577,27588,27589,27599,27611,27619,27631],{},[1580,27590,27591,27593,1991,27595,21929,27597,1696],{},[1681,27592,2008],{},[1989,27594],{},[1740,27596,21928],{},[1596,27598,9093],{"href":1383},[1580,27600,27601,27603,2037,27605,2041,27607,2045,27609,1696],{},[1681,27602,21061],{},[1989,27604],{},[1740,27606,2040],{},[1740,27608,2044],{},[1740,27610,18844],{},[1580,27612,27613,27615,21077,27617,21080],{},[1681,27614,21074],{},[1989,27616],{},[1740,27618,1809],{},[1580,27620,27621,27623,1991,27625,2088,27627,2110,27629,1696],{},[1681,27622,2103],{},[1989,27624],{},[1740,27626,21960],{},[1740,27628,2109],{},[1740,27630,15065],{},[1580,27632,27633,27635,2120,27637,2124],{},[1681,27634,2117],{},[1989,27636],{},[1740,27638,2123],{},[1570,27640,2127,27641],{},[1596,27642,2130],{"href":82},{"title":1640,"searchDepth":1641,"depth":1641,"links":27644},[27645,27646,27647,27648,27649,27650],{"id":1675,"depth":1644,"text":1676},{"id":21816,"depth":1644,"text":21817},{"id":21835,"depth":1644,"text":21836},{"id":21901,"depth":1644,"text":21902},{"id":1963,"depth":1644,"text":1964},{"id":1975,"depth":1644,"text":1398},{"read":3158,"level":2149,"video":21987,"templateId":6282,"type":2152,"format":2153,"intent_type":3384,"intent":5637,"tags":27652,"platfrom":27653},[2158,16816,21137],[3387],{"title":21789,"description":21985},[],{"parent":894,"items":27657},[27658,27731,27796,27896,27937,27985,28053,28166,28234,28313,28367,28486,28570,28623,28672,28725,28789,28900,28993,29042,29126,29179,29260,29361,29464,29556,29676,29730,29783,29921,29998,30065,30126,30295,30419,30550,30672,30727,30821,30924,31003,31065,31148,31244,31297,31374,31447,31500,31592,31690,31771,31843,31910,31962,32119,32197,32249,32341,32421,32501,32538,32593,32642,32704,32771,32837,32883,32951,33016,33085,33154,33236,33307,33361,33418,33517,33584,33662,33726,33789,33884,33950,34037],{"id":27659,"title":899,"body":27660,"date":1651,"description":27725,"extension":1653,"meta":27726,"navigation":1657,"order":1651,"path":900,"seo":27729,"stem":901,"__hash__":27730},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fadd-error-metadata.md",{"type":1555,"value":27661,"toc":27718},[27662,27665,27669,27671,27674,27676,27687,27691,27693,27696,27700,27702,27705,27709,27711],[1558,27663],{"video":27664},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2380&end=2419?rel=0",[1562,27666,27668],{"id":27667},"what-to-use-the-add-error-metadata-step-for","What to use the Add error metadata step for",[1567,27670],{},[1570,27672,27673],{},"This step's output is included in error messages from subsequent steps, aiding in debugging and testing data output.",[1570,27675,1575],{},[1577,27677,27678,27681,27684],{},[1580,27679,27680],{},"Test data output in steps",[1580,27682,27683],{},"Working out causes of errors in steps",[1580,27685,27686],{},"Enhance error messages",[1562,27688,27690],{"id":27689},"how-to-configure-the-add-error-metadata-step","How to configure the Add error metadata step",[1567,27692],{},[1570,27694,27695],{},"Add this step to the start of your Axiom.",[1611,27697,27699],{"id":27698},"message","Message",[1567,27701],{},[1570,27703,27704],{},"Build your custom error message here. Use 'Insert Data' to select tokens to display data you wish to check from steps in your Axiom.",[1562,27706,27708],{"id":27707},"additional-information","Additional information",[1567,27710],{},[1570,27712,27713,27714,27717],{},"You may want to try our ",[1596,27715,27716],{"href":1198},"'Try catch'"," step to aid debugging.",{"title":1640,"searchDepth":1641,"depth":1641,"links":27719},[27720,27721,27724],{"id":27667,"depth":1644,"text":27668},{"id":27689,"depth":1644,"text":27690,"children":27722},[27723],{"id":27698,"depth":1641,"text":27699},{"id":27707,"depth":1644,"text":27708},"Insert debug or error messages. Use to test data output and check step results during automation runs.",{"category":27727,"icon":27728},"Debug","WidgetErrorMetadata.svg",{"title":899,"description":27725},"RXrBAUTurbUAjT707MN35qiPnV82-6d8XTLRHymYXPA",{"id":27732,"title":903,"body":27733,"date":1651,"description":27790,"extension":1653,"meta":27791,"navigation":1657,"order":1651,"path":904,"seo":27794,"stem":905,"__hash__":27795},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fadd-row-numbers.md",{"type":1555,"value":27734,"toc":27783},[27735,27739,27741,27744,27747,27765,27769,27771,27773,27776,27780],[1562,27736,27738],{"id":27737},"what-to-use-the-add-row-numbers-step-for","What to use the Add row numbers step for",[1567,27740],{},[1570,27742,27743],{},"Insert row numbers into your data set. This step adds a column to the start of your data so you can track each row. It is useful when you want to write data back to specific rows in your data source.",[1570,27745,27746],{},"You can use this step to add row numbers to:",[1577,27748,27749,27759],{},[1580,27750,27751,27752,3634,27754,27756,27757],{},"Data imported from ",[1596,27753,759],{"href":1091},[1596,27755,29],{"href":1099},", or ",[1596,27758,19736],{"href":1095},[1580,27760,27761,27762],{},"Data imported via a ",[1596,27763,27764],{"href":1111},"webhook.",[1562,27766,27768],{"id":27767},"how-to-configure-the-add-row-numbers-step","How to configure the Add row numbers step",[1567,27770],{},[1611,27772,1907],{"id":3468},[1570,27774,27775],{},"Select the data to append the row numbers to.",[1611,27777,27779],{"id":27778},"offset","Offset",[1570,27781,27782],{},"Set an number to start the row numbering at.",{"title":1640,"searchDepth":1641,"depth":1641,"links":27784},[27785,27786],{"id":27737,"depth":1644,"text":27738},{"id":27767,"depth":1644,"text":27768,"children":27787},[27788,27789],{"id":3468,"depth":1641,"text":1907},{"id":27778,"depth":1641,"text":27779},"Add row numbers to your data so you can track, organise, and manipulate each row during your automation.",{"category":27792,"icon":27793},"Read and write data","WidgetRowNumbers.svg",{"title":903,"description":27790},"LwFlPrrAWZSJz0T1XjIMknjWr_QDDOITQk5nx_XahNU",{"id":27797,"title":907,"body":27798,"date":1651,"description":27890,"extension":1653,"meta":27891,"navigation":1657,"order":1651,"path":908,"seo":27894,"stem":909,"__hash__":27895},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fappend-or-merge-data.md",{"type":1555,"value":27799,"toc":27881},[27800,27803,27807,27809,27816,27827,27833,27837,27839,27842,27845,27847,27853,27856,27858,27864,27867,27869,27872,27876,27878],[1558,27801],{"video":27802},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1634&end=1690?rel=0",[1562,27804,27806],{"id":27805},"what-to-use-the-append-or-merge-data-step-for","What to use the Append or Merge data step for",[1567,27808],{},[1570,27810,27811,27812,27815],{},"This step merges data by appending one set to another, either horizontally to merge rows or vertically to add columns from the second set to the end of the first. It's commonly used to append a webpage's URL to ",[1596,27813,27814],{"href":1040},"'scraped data.'","\nYou can use this step to:",[1577,27817,27818,27821,27824],{},[1580,27819,27820],{},"Combine Google Sheet data with scraped data",[1580,27822,27823],{},"Merge scraped data to a CSV",[1580,27825,27826],{},"Join two sets of scraped data",[1570,27828,27829,27830],{},"If you are looking to join different data sources based on matching columns try this ",[1596,27831,27832],{"href":1067},"step.",[1562,27834,27836],{"id":27835},"how-to-configure-the-append-or-merge-data-step","How to configure the Append or Merge data step",[1567,27838],{},[1570,27840,27841],{},"If you need to combine more than two sets of data, use multiple Append data steps.",[1611,27843,1870],{"id":27844},"data-a",[1567,27846],{},[1570,27848,27849,27850,27852],{},"Select the Data to be appended to (For example, data from a ",[1596,27851,17170],{"href":1091}," When selecting data, click on the token to see a preview. Click 'Save and close' to select all or click 'Clear All' to choose columns individually.",[1611,27854,1880],{"id":27855},"data-b",[1567,27857],{},[1570,27859,27860,27861,27852],{},"Select the Data to be appended (For example, data from the ",[1596,27862,27863],{"href":1040},"Get data step.",[1611,27865,12451],{"id":27866},"append-mode",[1567,27868],{},[1570,27870,27871],{},"Choose to append the data horizontally or vertically. axiom.ai's data is formatted in a 2D array, so we commonly use the horizontal method which adds a column to the end of the array.",[1611,27873,27875],{"id":27874},"output","Output",[1567,27877],{},[1570,27879,27880],{},"A preview of the appended data, so you can decide how you want to add it.",{"title":1640,"searchDepth":1641,"depth":1641,"links":27882},[27883,27884],{"id":27805,"depth":1644,"text":27806},{"id":27835,"depth":1644,"text":27836,"children":27885},[27886,27887,27888,27889],{"id":27844,"depth":1641,"text":1870},{"id":27855,"depth":1641,"text":1880},{"id":27866,"depth":1641,"text":12451},{"id":27874,"depth":1641,"text":27875},"Join data from separate steps. Use to combine scraped data with data from a Google Sheet. Join single columns or entire datasets.",{"category":27892,"icon":27893},"Manipulate data","WidgetFilterAppend.svg",{"title":907,"description":27890},"sFc7P6O4atmjqFGlQZ4ZDfj34_CWDB5nt4waLzQ1M5c",{"id":27897,"title":911,"body":27898,"date":1651,"description":27931,"extension":1653,"meta":27932,"navigation":1657,"order":1651,"path":912,"seo":27935,"stem":913,"__hash__":27936},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fback.md",{"type":1555,"value":27899,"toc":27927},[27900,27903,27910,27912,27917,27919,27924],[1558,27901],{"video":27902},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ7O7QzaDS3I?si=cxqftugzWbysa_9T&start=751&rel=0",[1562,27904,27906,27907,12717],{"id":27905},"purpose-of-the-back-step","Purpose of the ",[1681,27908,27909],{},"Back",[1567,27911],{},[1570,27913,6680,27914,27916],{},[1681,27915,27909],{}," step is a simple action that navigates back to the previous page, similar to clicking the 'Back' button in a browser.",[1570,27918,1575],{},[1577,27920,27921],{},[1580,27922,27923],{},"Navigate to the previous page in your browser workflow",[1570,27925,27926],{},"This step requires no configuration.",{"title":1640,"searchDepth":1641,"depth":1641,"links":27928},[27929],{"id":27905,"depth":1644,"text":27930},"Purpose of the Back step","Go back to the previous tab. Return to an earlier page during an automation run.",{"category":27933,"icon":27934},"Navigate","WidgetDriverBack.svg",{"title":911,"description":27931},"5SKdRX1dQ4xnsI9D_eDIHuriffME3kjeSJqcJzSzVjg",{"id":27938,"title":915,"body":27939,"date":1651,"description":27979,"extension":1653,"meta":27980,"navigation":1657,"order":1651,"path":916,"seo":27983,"stem":917,"__hash__":27984},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclear-cookies.md",{"type":1555,"value":27940,"toc":27975},[27941,27944,27948,27950,27953,27955,27966,27970,27972],[1558,27942],{"video":27943},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1690&end=1709?rel=0",[1562,27945,27947],{"id":27946},"what-to-use-the-clear-cookies-step-for","What to use the Clear cookies step for",[1567,27949],{},[1570,27951,27952],{},"This step, 'Clear cookies,' is useful for switching between accounts in the same web application and requires no configuration.",[1570,27954,1575],{},[1577,27956,27957,27960,27963],{},[1580,27958,27959],{},"Remove session data",[1580,27961,27962],{},"When logging in with multiple accounts",[1580,27964,27965],{},"For additional security",[1562,27967,27969],{"id":27968},"how-to-configure-the-clear-cookies-step","How to configure the Clear cookies step",[1567,27971],{},[1570,27973,27974],{},"No configuration is required. Add the step when needed.",{"title":1640,"searchDepth":1641,"depth":1641,"links":27976},[27977,27978],{"id":27946,"depth":1644,"text":27947},{"id":27968,"depth":1644,"text":27969},"Clear cookies during a run. Use to log out or fix login issues caused by corrupted cookies.",{"category":27981,"icon":27982},"Other","WidgetDriverClearCookies.svg",{"title":915,"description":27979},"AOX3ZtDUw6vJCOGZtBImdXMEyn-AoOuoecFjxSmE514",{"id":27986,"title":919,"body":27987,"date":1651,"description":28048,"extension":1653,"meta":28049,"navigation":1657,"order":1651,"path":920,"seo":28051,"stem":921,"__hash__":28052},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclear-data-from-a-google-sheet.md",{"type":1555,"value":27988,"toc":28039},[27989,27992,27996,27998,28004,28009,28013,28015,28018,28021,28024,28027,28030,28033,28036],[1558,27990],{"video":27991},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1709&end=1749?rel=0",[1562,27993,27995],{"id":27994},"what-to-use-the-clear-data-from-a-google-sheet-step-for","What to use the Clear data from a Google Sheet step for",[1567,27997],{},[1570,27999,28000,28001,27815],{},"This step clears the contents of the selected cell range while preserving formatting in a Google sheet. Use this step to clear data stored in a Google Sheet rather than ",[1596,28002,28003],{"href":976},"deleting rows.",[1577,28005,28006],{},[1580,28007,28008],{},"Clear values from a Google Sheet",[1562,28010,28012],{"id":28011},"how-to-configure-the-clear-data-from-a-google-sheet-step","How to configure the Clear data from a Google Sheet step",[1567,28014],{},[1611,28016,1749],{"id":28017},"spreadsheet",[1570,28019,28020],{},"Select a Google Sheet to clear, or paste its URL here . You can also use 'Insert Data' to pass spreadsheet URLs into this step.",[1611,28022,1755],{"id":28023},"sheet-name",[1570,28025,28026],{},"Leave blank to use the first sheet or select a sheet name.",[1611,28028,8780],{"id":28029},"first-cell",[1570,28031,28032],{},"Enter a column and row number if you wish to start your clear operation from a particular cell in your Google Sheet. For example, 'B10' will\nmean your bot will start clear data from the second column on the 10th row.",[1611,28034,1998],{"id":28035},"last-cell",[1570,28037,28038],{},"Enter a column and row number combination if you wish to end the clear operation at a particular cell in your Google Sheet. For example, 'B100' will mean your bot will end clearing data at the 100th row in the second column.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28040},[28041,28042],{"id":27994,"depth":1644,"text":27995},{"id":28011,"depth":1644,"text":28012,"children":28043},[28044,28045,28046,28047],{"id":28017,"depth":1641,"text":1749},{"id":28023,"depth":1641,"text":1755},{"id":28029,"depth":1641,"text":8780},{"id":28035,"depth":1641,"text":1998},"Clear data from your Google Sheet. Use to remove rows, columns, or entire ranges before writing new data.",{"category":27792,"icon":28050},"WidgetClearGoogleSheet.svg",{"title":919,"description":28048},"lcZMooT5UpnDWq556CfwlmM5oMW2B-EzBXCfzFekkow",{"id":28054,"title":923,"body":28055,"date":1651,"description":28160,"extension":1653,"meta":28161,"navigation":1657,"order":1651,"path":924,"seo":28164,"stem":925,"__hash__":28165},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-element.md",{"type":1555,"value":28056,"toc":28152},[28057,28060,28064,28066,28069,28071,28107,28111,28113,28116,28119,28122,28133,28138,28142,28145,28149],[1558,28058],{"video":28059},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1749&end=1838?rel=0",[1562,28061,28063],{"id":28062},"what-to-use-the-click-element-step-for","What to use the click element step for",[1567,28065],{},[1570,28067,28068],{},"The \"Click element\" step automates clicks in web automation, essential for actions like liking content or submitting forms. Learn about optional clicks and using element text for button selection.",[1570,28070,1575],{},[1577,28072,28073,28079,28082,28093,28102],{},[1580,28074,28075,28076],{},"Click submit on a ",[1596,28077,28078],{"href":9110},"form",[1580,28080,28081],{},"Close a pop-up window by clicking 'X'",[1580,28083,28084,28085,28088,28089,28092],{},"Like an ",[1596,28086,28087],{"href":14582},"Instagram post"," - Click on a ",[1596,28090,28091],{"href":1162},"select list"," - Tick a box",[1580,28094,28095,28097,28098],{},[1596,28096,9210],{"href":3146}," - Click to generate ",[1596,28099,28101],{"href":28100},"\u002Fblog\u002Fhow-to-automate-reporting","reports",[1580,28103,28104,28105,2862],{},"Click to discover even more uses for the ",[1596,28106,5254],{"href":525},[1562,28108,28110],{"id":28109},"configuration","Configuration",[1567,28112],{},[1611,28114,1803],{"id":28115},"select",[1570,28117,28118],{},"Click 'Select' to choose the button click you wish to automate. The display will transform into the single selector tool, then point and click.",[1570,28120,28121],{},"The single selector tool comes with several valuable features accessed by clicking custom:",[1577,28123,28124,28127,28130],{},[1580,28125,28126],{},"Ability to use custom CSS selectors",[1580,28128,28129],{},"'Use element text' allows you to click buttons based on the button text i.e. 'Submit'",[1580,28131,28132],{},"Pass CSS selectors in from data sources like a Google Sheet",[1570,28134,28135],{},[1596,28136,28137],{"href":1377},"Watch these guides to learn more about the selector tool.",[1611,28139,28141],{"id":28140},"left-click-right-click","Left click | Right click",[1570,28143,28144],{},"Toggle off to perform a left click; toggle on to perform a right click.",[1611,28146,28148],{"id":28147},"optional-click-can-be-very-handy","Optional click (Can be very handy)",[1570,28150,28151],{},"By default, if the selected element is missing, Axiom will throw an error and stop the run. However, in some cases, you may want to click on an element that is not always present. If you check this box, the error will be ignored and the run will complete.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28153},[28154,28155],{"id":28062,"depth":1644,"text":28063},{"id":28109,"depth":1644,"text":28110,"children":28156},[28157,28158,28159],{"id":28115,"depth":1641,"text":1803},{"id":28140,"depth":1641,"text":28141},{"id":28147,"depth":1641,"text":28148},"Replicate page clicks on links or buttons with the Click element step. Point and click to select the action you want to automate.",{"category":28162,"icon":28163},"Interact","WidgetDriverClick.svg",{"title":923,"description":28160},"Dqft2xEmSrvXpNUPqpdHxo968EaVTJn5AGKk--_6hY4",{"id":28167,"title":927,"body":28168,"date":1651,"description":28229,"extension":1653,"meta":28230,"navigation":1657,"order":1651,"path":928,"seo":28232,"stem":929,"__hash__":28233},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-multiple-elements.md",{"type":1555,"value":28169,"toc":28221},[28170,28173,28176,28180,28182,28185,28187,28195,28199,28201,28203,28206,28210,28212,28214,28218],[1558,28171],{"video":28172},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=3192&end=3220?rel=0",[1570,28174,28175],{},"Use our 'Click multiple elements' step to automate many button clicks on any webpage without code.",[1562,28177,28179],{"id":28178},"what-to-use-the-click-multiple-elements-step-for","What to use the Click multiple elements step for",[1567,28181],{},[1570,28183,28184],{},"Instruct the bot to click multiple buttons, links, or other elements with a common structure, ideal for listing and feed pages.",[1570,28186,1575],{},[1577,28188,28189,28192],{},[1580,28190,28191],{},"Click buttons on listing pages",[1580,28193,28194],{},"Interact with buttons in feeds",[1562,28196,28198],{"id":28197},"how-to-configure-the-click-multiple-elements-step","How to configure the Click multiple elements step",[1567,28200],{},[1611,28202,1803],{"id":28115},[1570,28204,28205],{},"Click 'Select' to choose the button click you wish to automate. The display will transform into the Single selector tool, then point and click.",[1570,28207,28208],{},[1596,28209,28137],{"href":1377},[1611,28211,28141],{"id":28140},[1570,28213,28144],{},[1611,28215,28217],{"id":28216},"maximum-clicks","Maximum clicks",[1570,28219,28220],{},"The maximum number of clicks to perform.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28222},[28223,28224],{"id":28178,"depth":1644,"text":28179},{"id":28197,"depth":1644,"text":28198,"children":28225},[28226,28227,28228],{"id":28115,"depth":1641,"text":1803},{"id":28140,"depth":1641,"text":28141},{"id":28216,"depth":1641,"text":28217},"Replicate multiple clicks on links or buttons with the Click element step. Point and click to select each action to automate.",{"category":28162,"icon":28231},"WidgetDriverClickMultiple.svg",{"title":927,"description":28229},"JLiq6lKSanl94mv-bShfgQ6Xcl9XquENuEW9XtawsS0",{"id":28235,"title":931,"body":28236,"date":1651,"description":28308,"extension":1653,"meta":28309,"navigation":1657,"order":1651,"path":932,"seo":28311,"stem":933,"__hash__":28312},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclick-social-media-buttons.md",{"type":1555,"value":28237,"toc":28301},[28238,28241,28245,28247,28257,28270,28274,28276,28278,28280,28282,28290,28294,28298],[1558,28239],{"video":28240},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=3247&end=3312?rel=0",[1562,28242,28244],{"id":28243},"what-to-use-the-click-social-media-buttons-step-for","What to use the Click social media buttons step for",[1567,28246],{},[1570,28248,28249,28250,28253,28254,27815],{},"Click on a social button such as like, follow, etc. but only if it has not already been clicked. Create web automations for any social media platform with this handy step and ",[1596,28251,28252],{"href":894},"others."," Why not try this ",[1596,28255,28256],{"href":12771},"Instagram template.",[1577,28258,28259],{},[1580,28260,28261,28262,28264,28265,28267,28268],{},"Click like on ",[1596,28263,13110],{"href":12771},"- Heart tweets on ",[1596,28266,11683],{"href":11684},"- Thumbs up on ",[1596,28269,2691],{"href":2951},[1562,28271,28273],{"id":28272},"how-to-configure-the-click-social-media-buttons-step","How to configure the Click social media buttons step",[1567,28275],{},[1611,28277,1803],{"id":28115},[1570,28279,28205],{},[1570,28281,28121],{},[1577,28283,28284,28286,28288],{},[1580,28285,28126],{},[1580,28287,28129],{},[1580,28289,28132],{},[1570,28291,28292],{},[1596,28293,28137],{"href":1377},[1611,28295,28297],{"id":28296},"set-value-to-check","Set value to check",[1570,28299,28300],{},"The bot will check these values. If one is present on the link or in the button code, it will not perform the click. We have set some default values to check for in the HTML. You may need to use the Chrome Inspector tool to work out new values to check for.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28302},[28303,28304],{"id":28243,"depth":1644,"text":28244},{"id":28272,"depth":1644,"text":28273,"children":28305},[28306,28307],{"id":28115,"depth":1641,"text":1803},{"id":28296,"depth":1641,"text":28297},"Automate actions on social media such as like and follow. Set a value to ensure clicks do not unfollow or unlike.",{"category":28162,"icon":28310},"WidgetClickEngagementButton.svg",{"title":931,"description":28308},"AOF4AloDmoLKGUgxiuqL4wSm-LdXB_epd4DvH4FuFdg",{"id":28314,"title":935,"body":28315,"date":1651,"description":28362,"extension":1653,"meta":28363,"navigation":1657,"order":1651,"path":936,"seo":28365,"stem":937,"__hash__":28366},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fclose-tab.md",{"type":1555,"value":28316,"toc":28356},[28317,28320,28324,28326,28333,28335,28343,28347,28349,28353],[1558,28318],{"video":28319},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1839&end=1864?rel=0",[1562,28321,28323],{"id":28322},"what-to-use-the-close-browser-tab-step-for","What to use the Close browser tab step for",[1567,28325],{},[1570,28327,28328,28329,28332],{},"This step closes a tab, necessary when new pages open during bot runs to return to the previous tab. The bot operates in only one tab at a time and cannot switch tabs automatically. Errors like 'click not found' occur if the bot is active in the wrong tab. Combine this step with the ",[1596,28330,28331],{"href":1190},"'Switch tab'"," step for multi-tab automation.",[1570,28334,1575],{},[1577,28336,28337,28340],{},[1580,28338,28339],{},"Close new tabs that open in pop up windows",[1580,28341,28342],{},"Return to previous tab",[1562,28344,28346],{"id":28345},"how-to-configure-the-close-browser-tab-step","How to configure the Close browser tab step",[1567,28348],{},[1611,28350,28352],{"id":28351},"select-tab","Select Tab",[1570,28354,28355],{},"Set the position of the tab to switch to. 1 chooses the tab on the farthest left, 2 the second left etc.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28357},[28358,28359],{"id":28322,"depth":1644,"text":28323},{"id":28345,"depth":1644,"text":28346,"children":28360},[28361],{"id":28351,"depth":1641,"text":28352},"Close tabs during runtime. Use to manage open pages and keep the automation focused on active tasks.",{"category":27933,"icon":28364},"WidgetDriverCloseTab.svg",{"title":935,"description":28362},"K5rlOF6EPHuBEWtqK-uiC9EaW2L3Qv9XWe2PhEzkrFo",{"id":28368,"title":939,"body":28369,"date":1651,"description":28480,"extension":1653,"meta":28481,"navigation":1657,"order":1651,"path":940,"seo":28484,"stem":941,"__hash__":28485},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fconditionall-jump-step.md",{"type":1555,"value":28370,"toc":28469},[28371,28374,28378,28380,28383,28385,28404,28414,28418,28420,28423,28426,28429,28432,28435,28438,28441,28444,28447,28450,28453,28456,28459,28463],[1558,28372],{"video":28373},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=579&end=661?rel=0",[1562,28375,28377],{"id":28376},"what-to-use-the-conditionally-jump-step-for","What to use the Conditionally Jump step for",[1567,28379],{},[1570,28381,28382],{},"This logic step enables a bot to either jump to a new step or continue with its run based on the evaluation of a specific condition. For instance, it can be effectively paired with a Scraper step. In this scenario, once the Scraper extracts certain data, the logic step then assesses this data for a particular value. If the value is found, the bot is programmed to jump to a new step. If the value is not found the bot will continue.",[1570,28384,1575],{},[1577,28386,28387,28390,28396,28399],{},[1580,28388,28389],{},"Check for a value in Google sheet to bypass steps",[1580,28391,28392,28393,28395],{},"Check against a value on a webpage by ",[1596,28394,2158],{"href":1040}," it first",[1580,28397,28398],{},"Confirm a form or post has been submitted",[1580,28400,28401,28402],{},"Control the bot flow depending on a value found in a ",[1596,28403,5528],{"href":1091},[1570,28405,28406,28407,28410,28411,28413],{},"When combining the ",[1596,28408,939],{"href":28409},"#"," step and the ",[1596,28412,667],{"href":1075}," step, we recommend only using this step to jump to a later step in the loop, or to jump out of the loop to a later step in your automation. We do not recommend using this step to jump to an earlier step in the loop and this can not be used to jump to a previous iteration within the loop - doing so may cause issues with the data within the loop step.",[1562,28415,28417],{"id":28416},"how-to-configure-the-conditionally-jump","How to configure the Conditionally jump",[1567,28419],{},[1611,28421,7884],{"id":28422},"data-to-check",[1570,28424,28425],{},"Enter the data to check for values.",[1611,28427,7899],{"id":28428},"condition-to-check",[1570,28430,28431],{},"Check data for either a list of words, a number or if a javascript expression is true.",[1570,28433,28434],{},"Enter either a list of any number of words to check for, separated by commas, or data containing a list of words, one in each row or a number.",[1570,28436,28437],{},"Select if the condition should pass when either any of the supplied words are present in the data, or all of them are. Or select the condition to apply when Numbers is selected.",[1570,28439,28440],{},"Check this to match only when the complete word appears in the data. Only the characters a-z A-Z 0-9 and _ are considered to be part of a word, all other characters are considered as being part of a word boundary.",[1611,28442,7234],{"id":28443},"jump-to-step",[1570,28445,28446],{},"Enter the number of the step to jump to if the value is found.",[1611,28448,7239],{"id":28449},"maximum-cycles",[1570,28451,28452],{},"The number of times the step should jump.",[1611,28454,12948],{"id":28455},"reverse-condition",[1570,28457,28458],{},"Jump if the specified words or number NOT found.",[1611,28460,28462],{"id":28461},"addional-information","Addional information",[1570,28464,7816,28465,28468],{},[1596,28466,28467],{"href":1075},"loop step"," to loop your steps.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28470},[28471,28472],{"id":28376,"depth":1644,"text":28377},{"id":28416,"depth":1644,"text":28417,"children":28473},[28474,28475,28476,28477,28478,28479],{"id":28422,"depth":1641,"text":7884},{"id":28428,"depth":1641,"text":7899},{"id":28443,"depth":1641,"text":7234},{"id":28449,"depth":1641,"text":7239},{"id":28455,"depth":1641,"text":12948},{"id":28461,"depth":1641,"text":28462},"Jump to a different step based on logic set. Use strings, numbers, or JavaScript to define your argument.",{"category":28482,"icon":28483},"Control flow","WidgetJump.svg",{"title":939,"description":28480},"m5Q_QqCr0Di7plu0a0qkFR6D8_AtBmN2g0zV0dNsXig",{"id":28487,"title":943,"body":28488,"date":1651,"description":28565,"extension":1653,"meta":28566,"navigation":1657,"order":1651,"path":944,"seo":28568,"stem":945,"__hash__":28569},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcontinue-if-condition-met.md",{"type":1555,"value":28489,"toc":28556},[28490,28493,28497,28499,28506,28508,28525,28529,28531,28533,28536,28538,28540,28543,28545,28548,28551,28553],[1558,28491],{"video":28492},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=3085&end=3192?rel=0",[1562,28494,28496],{"id":28495},"what-to-use-the-continue-only-if-a-condition-is-met-step-for","What to use the Continue only if a condition is met step for",[1567,28498],{},[1570,28500,28501,28502,28505],{},"This logic step checks a value and continues the bot run if true. For instance, it can verify if content is updated by searching for 'New.' Pair it with the ",[1596,28503,28504],{"href":1040},"'scrape data'"," step to fetch the value.",[1570,28507,1575],{},[1577,28509,28510,28513,28518,28520],{},[1580,28511,28512],{},"Query if there's any data left in a Google Sheet, then stop bot run if empty",[1580,28514,28392,28515,28395],{},[1596,28516,28517],{"href":1040},"'scraping'",[1580,28519,28398],{},[1580,28521,28522,28523],{},"Control if a bot runs depending on a value found in a ",[1596,28524,5528],{"href":1091},[1562,28526,28528],{"id":28527},"how-to-configure-the-continue-only-if-a-condition-is-met-step","How to configure the Continue only if a condition is met step",[1567,28530],{},[1611,28532,7884],{"id":28422},[1570,28534,28535],{},"Select the variable containing the data you wish to check against. That variable could be from any step, for example, a webhook or scraper",[1611,28537,7899],{"id":28428},[1570,28539,28431],{},[1570,28541,28542],{},"Enter either a list of any number of words to check for, separated by commas, or data containing a list of words, one in each row. Leave blank to match anything. Or select the condition to apply when Numbers is selected.",[1570,28544,28440],{},[1611,28546,17607],{"id":28547},"fail-if-condition-not-met",[1570,28549,28550],{},"Tick this box to end the run with the 'Failed' status if the condition is not met. If this is left unchecked, the run will end in 'Success' instead.",[1611,28552,12948],{"id":28455},[1570,28554,28555],{},"Continue if the condition is NOT met.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28557},[28558,28559],{"id":28495,"depth":1644,"text":28496},{"id":28527,"depth":1644,"text":28528,"children":28560},[28561,28562,28563,28564],{"id":28422,"depth":1641,"text":7884},{"id":28428,"depth":1641,"text":7899},{"id":28547,"depth":1641,"text":17607},{"id":28455,"depth":1641,"text":12948},"Control bot runs with logic. Decide to continue or end based on argument constructed. Use data passed by other steps. Build argument with strings, numbers, or JavaScript.",{"category":28482,"icon":28567},"WidgetContinue.svg",{"title":943,"description":28565},"9_5grnOxtwttthw3pXCn6rMGI6R3VkmHhud4VQCP2k8",{"id":28571,"title":947,"body":28572,"date":1651,"description":28618,"extension":1653,"meta":28619,"navigation":1657,"order":1651,"path":948,"seo":28621,"stem":949,"__hash__":28622},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcount-rows.md",{"type":1555,"value":28573,"toc":28612},[28574,28577,28581,28583,28588,28590,28601,28605,28607,28609],[1558,28575],{"video":28576},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=3053&end=3085?rel=0",[1562,28578,28580],{"id":28579},"what-to-use-the-count-rows-step-for","What to use the Count rows step for",[1567,28582],{},[1570,28584,28585,28586,2862],{},"Use this step to count the number of rows in the selected data. Useful if you want to get the number of rows to control the number of loops you do with a Jump step. Use with the ",[1596,28587,16918],{"href":1091},[1570,28589,1575],{},[1577,28591,28592,28595],{},[1580,28593,28594],{},"Control the number of times a Jump step jumps. Use this steps token in the 'Maximum cycles' field.",[1580,28596,28597,28598],{},"Create a token for a row count to use in the ",[1596,28599,28600],{"href":1226},"'Javascript step'",[1562,28602,28604],{"id":28603},"how-to-configure-the-count-rows-step","How to configure the Count rows step",[1567,28606],{},[1611,28608,2109],{"id":3468},[1570,28610,28611],{},"Select the data to count.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28613},[28614,28615],{"id":28579,"depth":1644,"text":28580},{"id":28603,"depth":1644,"text":28604,"children":28616},[28617],{"id":3468,"depth":1641,"text":2109},"Count number of rows in a Google Sheet. Returns a variable for use in steps like Read data from Google Sheet to control how many rows to loop through or how many steps to jump.",{"category":27892,"icon":28620},"WidgetCountRows.svg",{"title":947,"description":28618},"0tMkKw-9pbcxGxeX2FCPQ2aSeqaO8r3V3BvGGl1oDYU",{"id":28624,"title":951,"body":28625,"date":1651,"description":28667,"extension":1653,"meta":28668,"navigation":1657,"order":1651,"path":952,"seo":28670,"stem":953,"__hash__":28671},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcreate-a-new-google-sheet.md",{"type":1555,"value":28626,"toc":28661},[28627,28630,28634,28636,28642,28645,28650,28654,28656,28658],[1558,28628],{"video":28629},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=166&end=190?rel=0",[1562,28631,28633],{"id":28632},"what-to-use-the-create-a-new-google-sheet-step-for","What to use the Create a new Google Sheet step for",[1567,28635],{},[1570,28637,28638,28639,1696],{},"Use this step to create new Google Sheets for your Axioms when automating the browser. If you need to write data to a Google Sheet use this ",[1596,28640,28641],{"href":1214},"step",[1570,28643,28644],{},"Use this step to:",[1577,28646,28647],{},[1580,28648,28649],{},"Creating new Google Sheets for you web automations",[1562,28651,28653],{"id":28652},"how-to-configure-the-create-a-new-google-sheet-step","How to configure the Create a new Google Sheet step",[1567,28655],{},[1611,28657,1755],{"id":28023},[1570,28659,28660],{},"Enter a name for the new Google Sheet.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28662},[28663,28664],{"id":28632,"depth":1644,"text":28633},{"id":28652,"depth":1644,"text":28653,"children":28665},[28666],{"id":28023,"depth":1641,"text":1755},"Create new Google Sheet on the fly during a bot run. Step returns the sheet value for use in other steps.",{"category":27792,"icon":28669},"WidgetCreateGoogleSheet.svg",{"title":951,"description":28667},"7s59o3I2VJ-IBRgT0KJbYxI76ydnavnWwmyHuqjqmn0",{"id":28673,"title":955,"body":28674,"date":1651,"description":28720,"extension":1653,"meta":28721,"navigation":1657,"order":1651,"path":956,"seo":28723,"stem":957,"__hash__":28724},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcurrent-url.md",{"type":1555,"value":28675,"toc":28714},[28676,28679,28683,28685,28694,28702,28706,28708,28711],[1558,28677],{"video":28678},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1864&end=1885?rel=0",[1562,28680,28682],{"id":28681},"what-to-use-the-get-current-bot-url-step-for","What to use the Get current bot URL step for",[1567,28684],{},[1570,28686,28687,28688,28690,28691,27815],{},"Use this step to Grab the URL that bot is currently on and store it as data for later use. This step is helpful because not all links can be scraped from the source. Using this step in combination with others like ",[1596,28689,17012],{"href":924},", you can make a bot to click links and open pages, so you can grab the URL and write it to a ",[1596,28692,28693],{"href":1214},"'Google Sheet.'",[1577,28695,28696,28699],{},[1580,28697,28698],{},"Get the URL from current page",[1580,28700,28701],{},"When a link cannot be scraped use a 'Click element' step then 'Get current bot URL' step",[1562,28703,28705],{"id":28704},"how-to-configure-the-get-current-bot-url-step","How to configure the Get current bot URL step",[1567,28707],{},[1611,28709,7835],{"id":28710},"get-current-bot-url",[1570,28712,28713],{},"No configuration is required. This Step will return a token containing the URL of the current page.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28715},[28716,28717],{"id":28681,"depth":1644,"text":28682},{"id":28704,"depth":1644,"text":28705,"children":28718},[28719],{"id":28710,"depth":1641,"text":7835},"Fetch URL from the active tab during a bot run. Return it for use in your automation.",{"category":28162,"icon":28722},"WidgetDriverCurrentUrl.svg",{"title":955,"description":28720},"OlBzXRadg1QKUSDLfbiVHsd9y2Ueweldy8JeqNln9Oc",{"id":28726,"title":959,"body":28727,"date":1651,"description":28784,"extension":1653,"meta":28785,"navigation":1657,"order":1651,"path":960,"seo":28787,"stem":961,"__hash__":28788},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fcustom-data.md",{"type":1555,"value":28728,"toc":28777},[28729,28732,28736,28738,28741,28746,28748,28759,28763,28765,28769,28772,28774],[1558,28730],{"video":28731},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1885&end=1911?rel=0",[1562,28733,28735],{"id":28734},"what-to-use-the-enter-custom-data-step-for","What to use the Enter custom data step for",[1567,28737],{},[1570,28739,28740],{},"The Enter custom data step is a simple field for storing small amounts of data that can be made accessible to other steps via axiom.ai's 'Insert Data' tokens feature found inside step fields.",[1570,28742,28743,28744,2862],{},"For example we use this step to store a list of CSS classes that we want to loop through in a ",[1596,28745,5254],{"href":924},[1570,28747,1575],{},[1577,28749,28750,28753,28756],{},[1580,28751,28752],{},"Create a token with a number value",[1580,28754,28755],{},"Make a token with a text value",[1580,28757,28758],{},"Store data such as CSS classes",[1562,28760,28762],{"id":28761},"how-to-configure-the-enter-custom-data-step","How to configure the Enter custom data step",[1567,28764],{},[1611,28766,28768],{"id":28767},"enter-custom-data","Enter custom data",[1570,28770,28771],{},"Enter a list of items to store as data; each line will be stored as a new row.",[1611,28773,27875],{"id":27874},[1570,28775,28776],{},"Preview of data",{"title":1640,"searchDepth":1641,"depth":1641,"links":28778},[28779,28780],{"id":28734,"depth":1644,"text":28735},{"id":28761,"depth":1644,"text":28762,"children":28781},[28782,28783],{"id":28767,"depth":1641,"text":28768},{"id":27874,"depth":1641,"text":27875},"Insert custom data returned for use in your automation. Used to store small amounts of data for use in your automations.",{"category":27727,"icon":28786},"WidgetFilterDataList.svg",{"title":959,"description":28784},"SY6jZV8nJCWdM1fw1H2dyivR2wi_5sn5f1u-43tczco",{"id":28790,"title":963,"body":28791,"date":1651,"description":28895,"extension":1653,"meta":28896,"navigation":1657,"order":1651,"path":964,"seo":28898,"stem":965,"__hash__":28899},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdate-picker.md",{"type":1555,"value":28792,"toc":28883},[28793,28796,28801,28803,28808,28814,28825,28831,28833,28837,28840,28844,28847,28851,28857,28861,28864,28868],[1558,28794],{"video":28795},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ7O7QzaDS3I?si=yZCBxs_lPS-99tOB&start=539&rel=0",[1562,28797,27906,28799,12717],{"id":28798},"purpose-of-the-date-picker-step",[1681,28800,289],{},[1567,28802],{},[1570,28804,6680,28805,28807],{},[1681,28806,289],{}," step is used to automate interactions with specific types of date pickers, such as the Trainline date picker shown above. This step works on date pickers that feature the current month and date, along with left and right buttons to change the month, and a calendar to select the day.",[1570,28809,28810,28811,28813],{},"You can use the ",[1681,28812,289],{}," step to:",[1577,28815,28816,28819,28822],{},[1580,28817,28818],{},"Automate entering a date when purchasing tickets",[1580,28820,28821],{},"Input a date when generating a report",[1580,28823,28824],{},"Submit a date when filling out web forms",[1562,28826,28828,28829,12717],{"id":28827},"how-to-configure-the-date-picker-step","How to Configure the ",[1681,28830,289],{},[1567,28832],{},[1611,28834,28836],{"id":28835},"select-month","Select month",[1570,28838,28839],{},"Select the text of the month displayed on the date picker.",[1611,28841,28843],{"id":28842},"select-month-change-button","Select month change button",[1570,28845,28846],{},"Choose the \"Previous\" or \"Next\" button, depending on whether you want to navigate to a future or past month.",[1611,28848,28850],{"id":28849},"change-month-to","Change month to",[1570,28852,28853,28854,28856],{},"Enter the exact text of the month you want to change to. ",[1681,28855,24302],{},": The text must match exactly as it appears on the date picker for this to work.",[1611,28858,28860],{"id":28859},"change-day-of-the-month-to","Change day of the month to",[1570,28862,28863],{},"Enter the day of the month you'd like to select.",[1611,28865,28867],{"id":28866},"keen-to-learn-more","Keen to learn more?",[1577,28869,28870,28876],{},[1580,28871,28872,28873],{},"Learn how to ",[1596,28874,28875],{"href":533},"automate the date picker",[1580,28877,28878,28879],{},"Explore ",[1596,28880,28882],{"href":28881},"\u002Fblog\u002Fhow-to-automate-a-date-picker","how to automate date pickers without code",{"title":1640,"searchDepth":1641,"depth":1641,"links":28884},[28885,28887],{"id":28798,"depth":1644,"text":28886},"Purpose of the Date picker step",{"id":28827,"depth":1644,"text":28888,"children":28889},"How to Configure the Date picker step",[28890,28891,28892,28893,28894],{"id":28835,"depth":1641,"text":28836},{"id":28842,"depth":1641,"text":28843},{"id":28849,"depth":1641,"text":28850},{"id":28859,"depth":1641,"text":28860},{"id":28866,"depth":1641,"text":28867},"A step designed to automate date pickers, commonly found in web forms. Select day, month, and year.",{"category":28162,"icon":28897},"WidgetDatePicker.svg",{"title":963,"description":28895},"7OPhTA3kkAM2nOxGdZekD2sXOhnB_tgfFAyj_IgC-3E",{"id":28901,"title":967,"body":28902,"date":1651,"description":28988,"extension":1653,"meta":28989,"navigation":1657,"order":1651,"path":968,"seo":28991,"stem":969,"__hash__":28992},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdate-time.md",{"type":1555,"value":28903,"toc":28981},[28904,28908,28910,28916,28919,28944,28948,28950,28954,28957,28960,28974,28978],[1562,28905,28907],{"id":28906},"what-to-use-this-step-for","What to use this step for",[1567,28909],{},[1570,28911,28912,28913,28915],{},"Use this step to return a date and time value as a token in your web automation. There are various formats to select from to produce the correct values for your location. Users often insert the token provided by the Date and time step into the ",[1596,28914,16980],{"href":1012}," in their web automation. So they can automate web actions like setting a date.",[1570,28917,28918],{},"You can use the date and time step to:",[1577,28920,28921,28924,28927,28930,28933],{},[1580,28922,28923],{},"Pass dates into file names",[1580,28925,28926],{},"Populate From and To dates in web forms",[1580,28928,28929],{},"Automate report downloads when a date range is needed",[1580,28931,28932],{},"Filtering dates on listing pages",[1580,28934,28935,28936,28939,28940,28943],{},"Tagging scraped content by date, use the ",[1596,28937,28938],{"href":908},"'Append step.'","\nIf we are missing a value or format, ",[1596,28941,28942],{"href":82},"let us know"," we can add it.",[1562,28945,28947],{"id":28946},"how-to-configure-the-date-and-time-step","How to configure the Date and time step",[1567,28949],{},[1611,28951,28953],{"id":28952},"select-date","Select date",[1570,28955,28956],{},"Current - get the current date in your location.",[1570,28958,28959],{},"Custom - select from preset dates:",[1577,28961,28962,28965,28968,28971],{},[1580,28963,28964],{},"Last day of previous months",[1580,28966,28967],{},"First day of this month",[1580,28969,28970],{},"N* days in the past",[1580,28972,28973],{},"N* days in the future",[1611,28975,28977],{"id":28976},"select-format","Select format",[1570,28979,28980],{},"Select a date or time, even both. Then choose a format to suit your Zone. If using the date in a file path, use hyphens.",{"title":1640,"searchDepth":1641,"depth":1641,"links":28982},[28983,28984],{"id":28906,"depth":1644,"text":28907},{"id":28946,"depth":1644,"text":28947,"children":28985},[28986,28987],{"id":28952,"depth":1641,"text":28953},{"id":28976,"depth":1641,"text":28977},"Use this step to return a date and time value as a token in your web automation.",{"category":27981,"icon":28990},"WidgetCurrentDateTime.svg",{"title":967,"description":28988},"t0obIh0FMW1phM3rRXs2nJBS3IvSSnw9jEcDXaXSf6I",{"id":28994,"title":971,"body":28995,"date":1651,"description":29036,"extension":1653,"meta":29037,"navigation":1657,"order":1651,"path":972,"seo":29040,"stem":973,"__hash__":29041},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdelete-files-from-google-drive.md",{"type":1555,"value":28996,"toc":29030},[28997,29001,29003,29006,29017,29021,29023,29027],[1562,28998,29000],{"id":28999},"what-to-use-the-delete-from-google-drive-step-for","What to use the Delete from Google Drive step for",[1567,29002],{},[1570,29004,29005],{},"Use this step to delete a file or folder from your Google Drive. It works in Axiom Cloud, so you can manage Drive files as part of an automation without the desktop application — for example, removing a file once it has been processed, or clearing out a working folder between runs.",[1570,29007,29008,29009,3634,29011,2094,29013,29016],{},"We have separate steps to ",[1596,29010,25003],{"href":1206},[1596,29012,12247],{"href":996},[1596,29014,29015],{"href":1103},"read"," files on Google Drive.",[1562,29018,29020],{"id":29019},"how-to-configure-the-delete-from-google-drive-step","How to configure the Delete from Google Drive step",[1567,29022],{},[1611,29024,29026],{"id":29025},"google-drive-file-or-folder-url","Google Drive file or folder URL",[1570,29028,29029],{},"Enter the URL of the file or folder in Google Drive to delete. Click 'Insert data' if you wish to pass URLs from a data source like a Google Sheet into this step.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29031},[29032,29033],{"id":28999,"depth":1644,"text":29000},{"id":29019,"depth":1644,"text":29020,"children":29034},[29035],{"id":29025,"depth":1641,"text":29026},"Delete a file or folder from your Google Drive. Use this step to clean up files while running bots in the cloud.",{"category":29038,"icon":29039},"Files","WidgetGoogleDriveFolder.svg",{"title":971,"description":29036},"9RU3ekFd2O0vjU46lYHGeUWMBhc7e--0qeKPIz2ScC8",{"id":29043,"title":975,"body":29044,"date":1651,"description":29121,"extension":1653,"meta":29122,"navigation":1657,"order":1651,"path":976,"seo":29124,"stem":977,"__hash__":29125},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdelete-rows-from-a-google-sheet.md",{"type":1555,"value":29045,"toc":29112},[29046,29049,29053,29055,29058,29061,29073,29077,29079,29083,29086,29089,29092,29095,29098,29100,29103],[1558,29047],{"video":29048},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1940&end=2001?rel=0",[1562,29050,29052],{"id":29051},"what-to-use-the-delete-rows-from-a-google-sheet-step-for","What to use the Delete rows from a Google Sheet step for",[1567,29054],{},[1570,29056,29057],{},"This step does what it says on the step: it deletes rows from a Google Sheet. But why would you want to do this?",[1570,29059,29060],{},"We use it as part of a technique called batching. This involves looping through steps using a jump step. For example, we start by reading a single row from a Google Sheet; we execute automation using that row's data. Then, we delete the row before moving on to read a new row.",[1570,29062,29063,29064,29068,29069],{},"To learn more about batching ",[1596,29065,29067],{"href":29066},"\u002Fdocs\u002Fbatching-bot-runs","click here.","\nWe also have templates ",[1596,29070,29072],{"href":29071},"\u002Fguides\u002Fweb-scraping-in-batches","you can try.",[1562,29074,29076],{"id":29075},"how-to-configure-the-delete-rows-from-a-google-sheet-step","How to configure the Delete rows from a Google Sheet step",[1567,29078],{},[1611,29080,29082],{"id":29081},"spreadsheet-url","Spreadsheet Url",[1570,29084,29085],{},"Search in the box for a Google Sheet or just cut and paste a URL into the field.",[1611,29087,13066],{"id":29088},"first-row-to-delete",[1570,29090,29091],{},"Enter the number of the first row to delete.",[1611,29093,13074],{"id":29094},"last-row-to-delete",[1570,29096,29097],{},"Enter the number of the last row to delete. Everything between the first and last rows will also be deleted.",[1611,29099,1755],{"id":28023},[1570,29101,29102],{},"Axiom fetches sheet names for you to select or type in a valid sheet name into the input field.",[1570,29104,29105,29106,2094,29108,29111],{},"If you liked this step you may also wish to checkout our ",[1596,29107,29015],{"href":1091},[1596,29109,29110],{"href":1214},"write"," Google Sheet steps.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29113},[29114,29115],{"id":29051,"depth":1644,"text":29052},{"id":29075,"depth":1644,"text":29076,"children":29116},[29117,29118,29119,29120],{"id":29081,"depth":1641,"text":29082},{"id":29088,"depth":1641,"text":13066},{"id":29094,"depth":1641,"text":13074},{"id":28023,"depth":1641,"text":1755},"Delete rows from a Google Sheet. Use with Find rows in Google Sheet to locate and remove specific cells or rows.",{"category":27792,"icon":29123},"WidgetDeleteRowsFromGoogleSheet.svg",{"title":975,"description":29121},"gEcIuVzvJ9GyvW5KyPcjDlm4XEW1AnNEXYqg58JxSf8",{"id":29127,"title":979,"body":29128,"date":1651,"description":29174,"extension":1653,"meta":29175,"navigation":1657,"order":1651,"path":980,"seo":29177,"stem":981,"__hash__":29178},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdisplay-a-message.md",{"type":1555,"value":29129,"toc":29168},[29130,29133,29137,29139,29146,29148,29159,29161,29163,29165],[1558,29131],{"video":29132},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1608&end=1634?rel=0",[1562,29134,29136],{"id":29135},"what-to-use-the-display-a-message-step-for","What to use the Display a message step for",[1567,29138],{},[1570,29140,29141,29142,29145],{},"The Display a message step is mainly utilised for debugging Axioms. It is similar to a 'Console Log' in programming, but is shown on the screen during runtime. This step is helpful in outputting data from previous steps to better comprehend the current situation. Additionally, it can be utilised to verify if any conditional logic is functioning as anticipated. For instance, when using the ",[1596,29143,29144],{"href":940},"Conditional Jump Step",", you can trigger a message when the conditions are either true or false.",[1570,29147,1575],{},[1577,29149,29150,29153,29156],{},[1580,29151,29152],{},"Display data output by steps",[1580,29154,29155],{},"Check conditional logic is working as expected",[1580,29157,29158],{},"Flag the step your automation is on",[1562,29160,28110],{"id":28109},[1567,29162],{},[1611,29164,27699],{"id":27698},[1570,29166,29167],{},"Type in the message you would like to display. You can also display data from other steps by clicking 'Insert Data.' You can add multiple tokens.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29169},[29170,29171],{"id":29135,"depth":1644,"text":29136},{"id":28109,"depth":1644,"text":28110,"children":29172},[29173],{"id":27698,"depth":1641,"text":27699},"Use Display message to open a dialog window in the browser. Pass data from other steps by inserting their tokens. Useful for debugging.",{"category":27727,"icon":29176},"WidgetDisplayMessage.svg",{"title":979,"description":29174},"QALqXL178zeZEfKFAn9SBa2fRjJfNp899tM9U-G4KaU",{"id":29180,"title":983,"body":29181,"date":1651,"description":29255,"extension":1653,"meta":29256,"navigation":1657,"order":1651,"path":984,"seo":29258,"stem":985,"__hash__":29259},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-file-from-url.md",{"type":1555,"value":29182,"toc":29247},[29183,29186,29190,29192,29202,29205,29216,29222,29226,29228,29231,29234,29237,29240,29244],[1558,29184],{"video":29185},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2913&end=2983?rel=0",[1562,29187,29189],{"id":29188},"what-to-use-the-download-file-from-url-step-for","What to use the Download file from URL step for",[1567,29191],{},[1570,29193,29194,29195,29197,29198,29201],{},"Use this step to automatically download a file from a specified URL to your computer. You can use this in conjunction with other steps to create a web automation that retrieves URLs from various sources such as ",[1596,29196,5528],{"href":1091},", and downloads the corresponding files. You can also ",[1596,29199,29200],{"href":992},"download files"," locally from a webpage to make your web automation.",[1570,29203,29204],{},"You can use this step to download files from URLs:",[1577,29206,29207,29210,29213],{},[1580,29208,29209],{},"Kept in a Spreadsheet",[1580,29211,29212],{},"Scraped from a website",[1580,29214,29215],{},"Stored in a CSV file",[1570,29217,29218,29219],{},"If you would like to know how to download files from a website, please follow this ",[1596,29220,29221],{"href":12231},"link for instructions.",[1562,29223,29225],{"id":29224},"how-to-configure-the-download-file-from-url-step","How to configure the Download file from URL step",[1567,29227],{},[1611,29229,1779],{"id":29230},"enter-url",[1570,29232,29233],{},"Enter the URL of a file to download. You can also plugin data from other steps. Click 'Insert data' to choose the source of you URLs.",[1611,29235,3268],{"id":29236},"folder",[1570,29238,29239],{},"Set a folder to download into, copy and paste a path to the folder or use the 'select' button to find the folder. Click 'Insert data' if you wish to pass folder paths from a data source into this step.",[1611,29241,29243],{"id":29242},"filename","Filename",[1570,29245,29246],{},"Renaming files is simple. You can type a value or pass a token into the field. A Token could be data from a Google Sheet by clicking 'Insert data'.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29248},[29249,29250],{"id":29188,"depth":1644,"text":29189},{"id":29224,"depth":1644,"text":29225,"children":29251},[29252,29253,29254],{"id":29230,"depth":1641,"text":1779},{"id":29236,"depth":1641,"text":3268},{"id":29242,"depth":1641,"text":29243},"Use this step to automatically download a file from a specified URL to your computer.",{"category":29038,"icon":29257},"WidgetDriverDownloadFromUrl.svg",{"title":983,"description":29255},"wRspoueeJmy0eZ3fGSliXevRSGhxvt7abpVQUJr_3bg",{"id":29261,"title":987,"body":29262,"date":1651,"description":29356,"extension":1653,"meta":29357,"navigation":1657,"order":1651,"path":988,"seo":29359,"stem":989,"__hash__":29360},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-file-step.md",{"type":1555,"value":29263,"toc":29348},[29264,29267,29271,29273,29278,29290,29293,29310,29314,29316,29318,29321,29323,29334,29338,29340,29343,29345],[1558,29265],{"video":29266},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FNRWmETc9YOM?rel=0?rel=0",[1562,29268,29270],{"id":29269},"what-to-use-the-download-file-step-for","What to use the Download file step for",[1567,29272],{},[1570,29274,29275,29276],{},"Use the Download File step to download images from Instagram and even grab files from legacy systems with no API. This step is a ubiquitous step designed to work with file download links. If you would like to know how to download files from a website, please follow this ",[1596,29277,29221],{"href":12231},[1570,29279,29280,29281,29284,29285,2094,29287,29289],{},"Currently, the Upload and Download steps only work with the axiom.ai Desktop Application. However, you can install the app by ",[1596,29282,12232],{"href":29283},"\u002Fguide-part-two","\nWe now have Google drive steps that allow you to ",[1596,29286,25003],{"href":1206},[1596,29288,12247],{"href":996}," files in the cloud.",[1570,29291,29292],{},"You can use this step to download files from:",[1577,29294,29295,29298,29301,29304,29307],{},[1580,29296,29297],{},"Amazon Seller Central.",[1580,29299,29300],{},"Social media platforms like Instagram or Youtube.",[1580,29302,29303],{},"Digital Asset management sites.",[1580,29305,29306],{},"Government websites.",[1580,29308,29309],{},"E-commerce stores.",[1562,29311,29313],{"id":29312},"how-to-configure-the-download-file-step","How to configure the download file step",[1567,29315],{},[1611,29317,1803],{"id":28115},[1570,29319,29320],{},"Select the file link. You do this with the selector tool, click 'Select'. The display will transform to the selector tool. Next, click on the link you wish to download your file from and confirm your choice.",[1570,29322,28121],{},[1577,29324,29325,29328,29331],{},[1580,29326,29327],{},"Ability to use custom CSS selectors.",[1580,29329,29330],{},"'Use element text' allows you to click buttons based on the button text i.e. 'Submit'.",[1580,29332,29333],{},"Pass CSS selectors in from data sources like a Google Sheet.",[1570,29335,29336],{},[1596,29337,28137],{"href":1377},[1611,29339,3268],{"id":29236},[1570,29341,29342],{},"Set a folder to download into, copy and paste a path to the folder or use the 'Click to select' button to find the folder. Click 'Insert data' if you wish to pass file path from a data source into this step.",[1611,29344,29243],{"id":29242},[1570,29346,29347],{},"Renaming files is simple. You can type a value or pass a token into the field. A Token could be data from a Google Sheet.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29349},[29350,29351],{"id":29269,"depth":1644,"text":29270},{"id":29312,"depth":1644,"text":29313,"children":29352},[29353,29354,29355],{"id":28115,"depth":1641,"text":1803},{"id":29236,"depth":1641,"text":3268},{"id":29242,"depth":1641,"text":29243},"Download a file via the desktop app to the local drive where the app is installed.",{"category":29038,"icon":29358},"WidgetDriverDownload.svg",{"title":987,"description":29356},"k1q-6319GJjAIsXTl-kXO0hOsrPpglJ-NNFqENmjDw8",{"id":29362,"title":991,"body":29363,"date":1651,"description":29459,"extension":1653,"meta":29460,"navigation":1657,"order":1651,"path":992,"seo":29462,"stem":993,"__hash__":29463},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-files.md",{"type":1555,"value":29364,"toc":29451},[29365,29368,29372,29374,29377,29387,29389,29412,29416,29420,29422,29424,29427,29430,29438,29442,29444,29447,29449],[1558,29366],{"video":29367},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2983&end=3053?rel=0",[1562,29369,29371],{"id":29370},"what-to-use-the-download-files-step-for","What to use the Download files step for",[1567,29373],{},[1570,29375,29376],{},"Use this step to automate the download of multiple files from a webpage. This step is most useful when downloading files from listing pages, like the ones found on Government websites.",[1570,29378,29379,29380,29382,29383,2094,29385,29289],{},"Currently, the Upload and Download steps only works with the Axiom Desktop Application. However, you can install the app by ",[1596,29381,12232],{"href":29283},"\nWe now have Google Drive steps that allow you to ",[1596,29384,25003],{"href":1206},[1596,29386,12247],{"href":996},[1570,29388,29292],{},[1577,29390,29391,29394,29397,29400,29403,29406,29409],{},[1580,29392,29393],{},"Amazon Seller Central",[1580,29395,29396],{},"Social media platforms like Instagram or Youtube",[1580,29398,29399],{},"Digital Asset management sites",[1580,29401,29402],{},"Government websites",[1580,29404,29405],{},"E-commerce stores",[1580,29407,29408],{},"Legal documents",[1580,29410,29411],{},"Property records",[1570,29413,29218,29414],{},[1596,29415,29221],{"href":12231},[1562,29417,29419],{"id":29418},"how-to-configure-the-download-files-step","How to configure the Download files step",[1567,29421],{},[1611,29423,1803],{"id":28115},[1570,29425,29426],{},"Select the files. You do this with the selector tool, click 'Select'. The display will transform to the selector tool. Next, click on the links you wish to download your files.",[1570,29428,29429],{},"The Single selector tool comes with several valuable features accessed by clicking custom:",[1577,29431,29432,29434,29436],{},[1580,29433,28126],{},[1580,29435,28129],{},[1580,29437,28132],{},[1570,29439,29440],{},[1596,29441,28137],{"href":1377},[1611,29443,3268],{"id":29236},[1570,29445,29446],{},"Set a folder to download into, copy and paste a path to the folder or use the 'Click to select' button to find the folder. Click 'Insert data' if you wish to pass file paths from a data source into this step.",[1611,29448,29243],{"id":29242},[1570,29450,29246],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":29452},[29453,29454],{"id":29370,"depth":1644,"text":29371},{"id":29418,"depth":1644,"text":29419,"children":29455},[29456,29457,29458],{"id":28115,"depth":1641,"text":1803},{"id":29236,"depth":1641,"text":3268},{"id":29242,"depth":1641,"text":29243},"Download files via the desktop app to the local drive where the app is installed.",{"category":29038,"icon":29461},"WidgetDriverDownloadFiles.svg",{"title":991,"description":29459},"3r00KkWNvofN9pbBCxDXdI7fEIo-1TpDrOWh6Zqhsk4",{"id":29465,"title":995,"body":29466,"date":1651,"description":29551,"extension":1653,"meta":29552,"navigation":1657,"order":1651,"path":996,"seo":29554,"stem":997,"__hash__":29555},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fdownload-files-to-google-drive.md",{"type":1555,"value":29467,"toc":29543},[29468,29471,29475,29477,29483,29495,29502,29505,29509,29511,29513,29516,29518,29526,29530,29534,29537,29540],[1558,29469],{"video":29470},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2833&end=2913?rel=0",[1562,29472,29474],{"id":29473},"what-to-use-the-download-a-file-to-google-drive-step-for","What to use the Download a file to Google Drive step for",[1567,29476],{},[1570,29478,29479,29480,29482],{},"Use this step to directly download files to your Google Drive from any web app. This step works in Axiom Cloud. Previously, files had to be downloaded to the desktop application. If you would like to know how to download files from a website, please follow this ",[1596,29481,29221],{"href":12231},"\nYou can use this step to download files from:",[1577,29484,29485,29487,29489,29491,29493],{},[1580,29486,29393],{},[1580,29488,29396],{},[1580,29490,29399],{},[1580,29492,29402],{},[1580,29494,29405],{},[1570,29496,29008,29497,2094,29499,29501],{},[1596,29498,25003],{"href":1202},[1596,29500,12247],{"href":988}," files on the desktop.",[1570,29503,29504],{},"Note: the \"Download files to Google Drive\" step supports files up to 250MB.",[1562,29506,29508],{"id":29507},"how-to-configure-the-download-a-file-to-google-drive-step","How to configure the Download a file to Google Drive step",[1567,29510],{},[1611,29512,1803],{"id":28115},[1570,29514,29515],{},"Click 'Select' to choose the file to download.",[1570,29517,29429],{},[1577,29519,29520,29522,29524],{},[1580,29521,28126],{},[1580,29523,28129],{},[1580,29525,28132],{},[1570,29527,29528],{},[1596,29529,28137],{"href":1377},[1611,29531,29533],{"id":29532},"google-drive-folder-url","Google Drive folder URL",[1570,29535,29536],{},"Enter the URL of the folder in Google Drive to download to. Click 'Insert data' if you wish to pass file paths from a data source into this step.",[1611,29538,3274],{"id":29539},"file-name",[1570,29541,29542],{},"Enter a name for the file on Google Drive. Leave blank to keep the existing filename. File names can be passed from data sources like a Google Sheet using 'Insert Data'.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29544},[29545,29546],{"id":29473,"depth":1644,"text":29474},{"id":29507,"depth":1644,"text":29508,"children":29547},[29548,29549,29550],{"id":28115,"depth":1641,"text":1803},{"id":29532,"depth":1641,"text":29533},{"id":29539,"depth":1641,"text":3274},"Download files from a web page directly to your Google Drive. Use this step to download files when running bots in the cloud.",{"category":29038,"icon":29553},"WidgetDriverDownloadToGoogleDrive.svg",{"title":995,"description":29551},"knPRz7poAAa0btmeqUPeYkiM1bYl_JlbD-r6JZ20wos",{"id":29557,"title":999,"body":29558,"date":1651,"description":29671,"extension":1653,"meta":29672,"navigation":1657,"order":1651,"path":1000,"seo":29674,"stem":1001,"__hash__":29675},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fedit-row.md",{"type":1555,"value":29559,"toc":29656},[29560,29563,29567,29569,29579,29582,29593,29597,29599,29601,29604,29606,29609,29613,29616,29619,29621,29624,29628,29630,29633,29635,29638,29641,29643,29646,29649],[1558,29561],{"video":29562},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ7O7QzaDS3I?rel=0&start=257&end=338?rel=0",[1562,29564,29566],{"id":29565},"purpose-of-the-edit-row-step","Purpose of the Edit Row step",[1567,29568],{},[1570,29570,29571,29572,2094,29575,29578],{},"The Edit Row step is a combination of two steps: ",[1681,29573,29574],{},"\"Find Row\"",[1681,29576,29577],{},"\"Write to Google Sheet\"",". This combination allows you to locate a row based on a specific value and then overwrite its data. Both steps need to be configured correctly to function.",[1570,29580,29581],{},"You can use the Edit Row step to update spreadsheet data, such as:",[1577,29583,29584,29587,29590],{},[1580,29585,29586],{},"Adjusting stock levels in a spreadsheet",[1580,29588,29589],{},"Updating cryptocurrency values",[1580,29591,29592],{},"Modifying report data",[1562,29594,29596],{"id":29595},"how-to-configure-the-find-row-step","How to Configure the 'Find Row' Step",[1567,29598],{},[1611,29600,1749],{"id":28017},[1570,29602,29603],{},"Select a Google Sheet to search, or paste its URL.",[1611,29605,5389],{"id":28023},[1570,29607,29608],{},"Optionally, specify the name of the sheet to search.",[1611,29610,29612],{"id":29611},"values-comma-separated","Values (comma-separated)",[1570,29614,29615],{},"Enter a list of values, separated by commas, or provide data containing values in separate rows. These values will be used to locate the specific row in the sheet.",[1570,29617,29618],{},"The remaining settings are optional and can be used as needed.",[1611,29620,1803],{"id":28115},[1570,29622,29623],{},"Click 'Select' to choose the item you want to interact with.",[1562,29625,29627],{"id":29626},"how-to-configure-the-write-to-google-sheet-step","How to Configure the 'Write to Google Sheet' Step",[1567,29629],{},[1611,29631,1749],{"id":29632},"spreadsheet-1",[1570,29634,29603],{},[1611,29636,5389],{"id":29637},"sheet-name-1",[1570,29639,29640],{},"Optionally, specify the name of the sheet to write to.",[1611,29642,2109],{"id":3468},[1570,29644,29645],{},"Select the data that you want to write to the sheet.",[1611,29647,5405],{"id":29648},"write-options",[1570,29650,29651,29652,29655],{},"If no value is set, the data will be written to column 'A' of the row found by the ",[1681,29653,29654],{},"Find Row"," step. If you need to modify column, adjust the 'A' value as needed.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29657},[29658,29659,29665],{"id":29565,"depth":1644,"text":29566},{"id":29595,"depth":1644,"text":29596,"children":29660},[29661,29662,29663,29664],{"id":28017,"depth":1641,"text":1749},{"id":28023,"depth":1641,"text":5389},{"id":29611,"depth":1641,"text":29612},{"id":28115,"depth":1641,"text":1803},{"id":29626,"depth":1644,"text":29627,"children":29666},[29667,29668,29669,29670],{"id":29632,"depth":1641,"text":1749},{"id":29637,"depth":1641,"text":5389},{"id":3468,"depth":1641,"text":2109},{"id":29648,"depth":1641,"text":5405},"This step combines Find row and Write to Google Sheet. Use to locate a row and overwrite its data.",{"category":27792,"icon":29673},"TemplateEditRowGoogleSheet.svg",{"title":999,"description":29671},"6_ocUra0B35ZCFjJRRlqzWdao4heV-KUG9LrH-7OLX0",{"id":29677,"title":1003,"body":29678,"date":1651,"description":29725,"extension":1653,"meta":29726,"navigation":1657,"order":1651,"path":1004,"seo":29728,"stem":1005,"__hash__":29729},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fend-loop.md",{"type":1555,"value":29679,"toc":29722},[29680,29684,29686,29689,29697,29709,29712],[1562,29681,29683],{"id":29682},"what-to-use-the-end-loop-step-for","What to use the End loop step for",[1567,29685],{},[1570,29687,29688],{},"The \"End loop\" step allows you to prematurely end a loop that has been initiated with the \"Loop through data\" step. This allows you to end the loop and continue onto the next step within your automation.",[1570,29690,29691,29692,29696],{},"When combined with a ",[1596,29693,29695],{"href":29694},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002F#control-flow","control flow"," step, you can use logic to determine when to finish your loop, this can be useful for:",[1577,29698,29699,29702],{},[1580,29700,29701],{},"Ending the loop when a condition is met",[1580,29703,29704,29705,2862],{},"Ending a loop when an issue occurs, using the ",[1596,29706,29708],{"href":29707},".\u002Ftry-catch","Try\u002FCatch",[1570,29710,29711],{},"Things to note:",[1577,29713,29714,29716,29719],{},[1580,29715,27926],{},[1580,29717,29718],{},"This step can only be used inside of a \"Loop through data\" step - placing it outside of this step will cause the step to be ignored.",[1580,29720,29721],{},"Using this step and then jumping back into the \"Loop through data\" step will cause the loop to restart from the first iteration, not where the \"End step\" was called.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29723},[29724],{"id":29682,"depth":1644,"text":29683},"Learn how to use the End loop step in your Axiom",{"category":28482,"icon":29727},"TemplateLoopThroughData.svg",{"title":1003,"description":29725},"kt_nm5Hfg3lzamYC2nhPIydtP-k97Cb0Uk3KusC4sCY",{"id":29731,"title":1007,"body":29732,"date":1651,"description":29778,"extension":1653,"meta":29779,"navigation":1657,"order":1651,"path":1008,"seo":29781,"stem":1009,"__hash__":29782},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fend-run.md",{"type":1555,"value":29733,"toc":29775},[29734,29737,29741,29743,29750,29752,29765,29768],[1558,29735],{"video":29736},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ7O7QzaDS3I?si=9TdeqHuBgCabTXSM&start=108&rel=0",[1562,29738,29740],{"id":29739},"what-to-use-the-end-run-step-for","What to use the End run step for",[1567,29742],{},[1570,29744,29745,29746,29749],{},"This step allows you to end your Axiom run without an error. You can use this in conjunction with conditional steps such as the ",[1596,29747,29748],{"href":1048},"If step"," to end your automation when a certain condition is met.",[1570,29751,1575],{},[1577,29753,29754,29760],{},[1580,29755,29756,29757],{},"End run as part of a ",[1596,29758,15666],{"href":29759},".\u002Fif-condtion",[1580,29761,29762,29763],{},"Stop a run with ",[1596,29764,1197],{"href":29707},[1570,29766,29767],{},"The step requires no configuration.",[1570,29769,29770,29771,1696],{},"If you want to learn more, here are some ",[1596,29772,29774],{"href":29773},"\u002Fblog\u002Fautomate-chrome-browser","web automation tips",{"title":1640,"searchDepth":1641,"depth":1641,"links":29776},[29777],{"id":29739,"depth":1644,"text":29740},"Use this step to end a run. Stops all remaining steps in the automation.",{"category":28482,"icon":29780},"WidgetEndRun.svg",{"title":1007,"description":29778},"jaxnIbsYPZTo-qOdJ9_mCQPkbroCMH_Xo9H9DlSv7ps",{"id":29784,"title":1011,"body":29785,"date":1651,"description":29916,"extension":1653,"meta":29917,"navigation":1657,"order":1651,"path":1012,"seo":29919,"stem":1013,"__hash__":29920},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fenter-text.md",{"type":1555,"value":29786,"toc":29905},[29787,29790,29794,29796,29803,29805,29825,29835,29839,29841,29845,29848,29850,29858,29862,29868,29870,29873,29877,29880,29884,29887,29890,29893,29897,29900],[1558,29788],{"video":29789},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?start=2001&end=2113&rel=0",[1562,29791,29793],{"id":29792},"what-to-use-the-enter-text-step-for","What to use the Enter text step for",[1567,29795],{},[1570,29797,29798,29799,29802],{},"The 'Enter text' step enables the user to select an input element and ",[1596,29800,29801],{"href":9110},"pass data"," from another step, without writing any code. This step is useful for web automation tasks such as data entry and UI testing.",[1570,29804,1575],{},[1577,29806,29807,29810,29813,29816,29819,29822],{},[1580,29808,29809],{},"Enter data into any CRM",[1580,29811,29812],{},"Input date ranges to download reports",[1580,29814,29815],{},"Login to applications",[1580,29817,29818],{},"Send a DM on Instagram or any social media app",[1580,29820,29821],{},"Create a mass mailer in Gmail or Outlook",[1580,29823,29824],{},"Uploading posts to web apps",[1570,29826,29827,29828,29831,29832],{},"To learn about data and looping, ",[1596,29829,29830],{"href":1373},"read this page",". You may also want to look at this ",[1596,29833,29834],{"href":8650},"data entry template.",[1562,29836,29838],{"id":29837},"configure-the-enter-text-step","Configure the Enter text step",[1567,29840],{},[1611,29842,29844],{"id":29843},"select-text-field","Select text field",[1570,29846,29847],{},"Click 'Select' to choose the text field that the Axiom should enter text into. The display will transform into the single selector tool, then point and click.",[1570,29849,28121],{},[1577,29851,29852,29854,29856],{},[1580,29853,28126],{},[1580,29855,28129],{},[1580,29857,28132],{},[1570,29859,29860],{},[1596,29861,28137],{"href":1377},[1570,29863,29864,29865],{},"If you do not select a field, the bot will type into whatever is selected by default, this works well in tandem with the ",[1596,29866,29867],{"href":1087},"Press key(s) step.",[1611,29869,2587],{"id":17969},[1570,29871,29872],{},"Input the text to enter. Use 'Insert Data' to pass data from sources such as a Google Sheet or WebHook.",[1611,29874,29876],{"id":29875},"delay","Delay",[1570,29878,29879],{},"Adds a delay between each key press in milliseconds.",[1611,29881,29883],{"id":29882},"append-to-existing","Append to existing",[1570,29885,29886],{},"Toggle on to skip clearing the text before entering. The value will be appended to whatever is already in the box.",[1611,29888,16175],{"id":29889},"custom-line-break",[1570,29891,29892],{},"Record a sequence of characters to use instead of enter for line breaks. For example, record shift and enter for Instagram DMs.",[1611,29894,29896],{"id":29895},"optional-text","Optional text",[1570,29898,29899],{},"If checked & the selected field is not present on the page the automation will continue without an error.",[1570,29901,29902,29903],{},"Learn more about automating data entry by ",[1596,29904,12232],{"href":9110},{"title":1640,"searchDepth":1641,"depth":1641,"links":29906},[29907,29908],{"id":29792,"depth":1644,"text":29793},{"id":29837,"depth":1644,"text":29838,"children":29909},[29910,29911,29912,29913,29914,29915],{"id":29843,"depth":1641,"text":29844},{"id":17969,"depth":1641,"text":2587},{"id":29875,"depth":1641,"text":29876},{"id":29882,"depth":1641,"text":29883},{"id":29889,"depth":1641,"text":16175},{"id":29895,"depth":1641,"text":29896},"Use this step to enter text into text fields found in web forms. Pass data from other steps into the Enter text step to automate data entry.",{"category":28162,"icon":29918},"WidgetDriverEnterText.svg",{"title":1011,"description":29916},"j0OYpLilXK4-s0r53GOPGDCcqTNq1cvqWPJEURovRPQ",{"id":29922,"title":1015,"body":29923,"date":1651,"description":29993,"extension":1653,"meta":29994,"navigation":1657,"order":1651,"path":1016,"seo":29996,"stem":1017,"__hash__":29997},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fexport-csv-file.md",{"type":1555,"value":29924,"toc":29984},[29925,29928,29932,29934,29937,29939,29957,29961,29963,29965,29968,29970,29973,29975,29978,29981],[1558,29926],{"video":29927},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2113&end=2143",[1562,29929,29931],{"id":29930},"what-to-use-the-export-to-csv-step-for","What to use the Export to CSV step for",[1567,29933],{},[1570,29935,29936],{},"This step exports data from any step in your Axiom into a CSV file on your local machine. A helpful step when scraping leads to upload into your CRM or when you need to merge a series of CSVs into a single file. Please note that the CSV will not download if triggered if you are running your automation in the Cloud.",[1570,29938,1575],{},[1577,29940,29941,29944,29951],{},[1580,29942,29943],{},"Export scraped data into a CSV",[1580,29945,29946,29947,29950],{},"Use with ",[1596,29948,29949],{"href":1056},"'Import CSV'"," step to merge CSVs into a single file",[1580,29952,29953,29954,29956],{},"Turn a ",[1596,29955,5528],{"href":1091}," into a CSV",[1562,29958,29960],{"id":29959},"how-to-configure-the-export-to-csv-step","How to configure the Export to CSV step",[1567,29962],{},[1611,29964,1907],{"id":3468},[1570,29966,29967],{},"Select the data to convert into a CSV file by clicking 'Insert data' inside the step.",[1611,29969,3268],{"id":29236},[1570,29971,29972],{},"Set a folder to export the file to, copy and paste a path to the folder or use the 'Click to select' button to find the folder. Click 'Insert data' if you wish to pass file path from a data source into this step.",[1611,29974,3274],{"id":29539},[1570,29976,29977],{},"Enter a name to save the file as. If the file already exists it will be renamed by the export process unless the overwrite option is used. You can also 'Insert data' and pass file name from a Google Sheet.",[1611,29979,3286],{"id":29980},"overwrite-existing-file",[1570,29982,29983],{},"Toggle on to overwrite existing file rather than renaming the new file.",{"title":1640,"searchDepth":1641,"depth":1641,"links":29985},[29986,29987],{"id":29930,"depth":1644,"text":29931},{"id":29959,"depth":1644,"text":29960,"children":29988},[29989,29990,29991,29992],{"id":3468,"depth":1641,"text":1907},{"id":29236,"depth":1641,"text":3268},{"id":29539,"depth":1641,"text":3274},{"id":29980,"depth":1641,"text":3286},"Export any data from Axiom in the form of a CSV. Use to download structured results for use outside the automation.",{"category":27792,"icon":29995},"WidgetExportCSV.svg",{"title":1015,"description":29993},"24YYXG9GZEbJFyGmh2OmanKUSGKtaV69AyXKDsUpb4E",{"id":29999,"title":1019,"body":30000,"date":1651,"description":1651,"extension":1653,"meta":30060,"navigation":1657,"order":1651,"path":1020,"seo":30063,"stem":1021,"__hash__":30064},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ffind-row.md",{"type":1555,"value":30001,"toc":30051},[30002,30005,30010,30012,30015,30018,30029,30032,30034,30036,30038,30040,30043,30045,30048],[1558,30003],{"video":30004},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ7O7QzaDS3I?rel=0&start=150&end=255?rel=0&start=1503&end=1560?rel=0",[1562,30006,27906,30008,12717],{"id":30007},"purpose-of-the-find-row-step",[1681,30009,29654],{},[1567,30011],{},[1570,30013,30014],{},"The Find Row step allows you to locate a specific row in a Google Sheet by searching for a value. Once the row is found, the row number is returned as a token, which can be used as data in your automation.",[1570,30016,30017],{},"You can use the Find Row step to locate rows for tasks such as:",[1577,30019,30020,30023,30026],{},[1580,30021,30022],{},"Updating stock levels",[1580,30024,30025],{},"Editing scraped data",[1580,30027,30028],{},"Generating reports",[1562,30030,30031],{"id":29595},"How to Configure the Find Row step",[1567,30033],{},[1611,30035,1749],{"id":28017},[1570,30037,29603],{},[1611,30039,5389],{"id":28023},[1570,30041,30042],{},"Optionally, specify the sheet name where you want to perform the search.",[1611,30044,29612],{"id":29611},[1570,30046,30047],{},"Enter a list of values, separated by commas, or provide data with one value per row. These values will be used to find the specific row in the sheet.",[1570,30049,30050],{},"The remaining settings are optional and should be used when necessary.",{"title":1640,"searchDepth":1641,"depth":1641,"links":30052},[30053,30055],{"id":30007,"depth":1644,"text":30054},"Purpose of the Find Row step",{"id":29595,"depth":1644,"text":30031,"children":30056},[30057,30058,30059],{"id":28017,"depth":1641,"text":1749},{"id":28023,"depth":1641,"text":5389},{"id":29611,"depth":1641,"text":29612},{"category":27792,"summary":30061,"icon":30062},"Search for a specific row in a Google Sheet. Use with Write data to Google Sheet to update specific cells without overwriting the entire sheet.","WidgetFindRowGoogleSheet.svg",{"title":1019,"description":1651},"zCzx_ysx-hvmFrkuPDl2Z-6UjWEt9XHb1lybfPxdx1o",{"id":30066,"title":1023,"body":30067,"date":1651,"description":30121,"extension":1653,"meta":30122,"navigation":1657,"order":1651,"path":1024,"seo":30124,"stem":1025,"__hash__":30125},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgenerate-random-password.md",{"type":1555,"value":30068,"toc":30114},[30069,30072,30076,30078,30084,30086,30094,30098,30100,30104,30107,30111],[1558,30070],{"video":30071},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=266&end=293?rel=0",[1562,30073,30075],{"id":30074},"what-to-use-the-generate-random-password-step-for","What to use the Generate random password step for",[1567,30077],{},[1570,30079,30080,30081,30083],{},"Auto-generate a password. You can configure the types of characters that are included and the length of the password. This step can be used with the ",[1596,30082,16980],{"href":1012}," step to input the passwords into a web form.",[1570,30085,1575],{},[1577,30087,30088,30091],{},[1580,30089,30090],{},"Test account login pages",[1580,30092,30093],{},"Create new user accounts",[1562,30095,30097],{"id":30096},"how-to-configure-the-generate-random-password-step","How to configure the Generate random password Step",[1567,30099],{},[1611,30101,30103],{"id":30102},"password-length","Password length",[1570,30105,30106],{},"Add a numeric value to set the length of password.",[1611,30108,30110],{"id":30109},"include-non-alphanumeric-characters","Include non-alphanumeric characters",[1570,30112,30113],{},"Tick the box to include non-alphanumeric (punctuation etc.) characters.",{"title":1640,"searchDepth":1641,"depth":1641,"links":30115},[30116,30117],{"id":30074,"depth":1644,"text":30075},{"id":30096,"depth":1644,"text":30097,"children":30118},[30119,30120],{"id":30102,"depth":1641,"text":30103},{"id":30109,"depth":1641,"text":30110},"Generate random password. Use in automations that require secure input like account creation or form filling.",{"category":27981,"icon":30123},"WidgetRadomPassword.svg",{"title":1023,"description":30121},"4ia25n-dD-BTdcAqfGlhlmt38hNUu4AO6KiUB_W4-x4",{"id":30127,"title":1027,"body":30128,"date":1651,"description":30290,"extension":1653,"meta":30291,"navigation":1657,"order":1651,"path":1028,"seo":30293,"stem":1029,"__hash__":30294},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-a-list-of-links-to-pages.md",{"type":1555,"value":30129,"toc":30275},[30130,30133,30137,30139,30162,30165,30188,30192,30194,30196,30199,30202,30211,30215,30219,30222,30225,30228,30232,30235,30239,30242,30246,30249,30253,30256,30260,30263,30267,30270,30272],[1558,30131],{"video":30132},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?start=3671&rel=0",[1562,30134,30136],{"id":30135},"what-to-use-the-get-a-list-of-links-to-pages-step-for","What to use the Get a list of links to pages step for",[1567,30138],{},[1570,30140,30141,30142,30145,30146,30149,30150,30154,30155,30158,30159],{},"Use this step to scrape links from the page the bot is currently on. Then pass the links into a ",[1596,30143,30144],{"href":1040},"'Get data from a webpage'"," step to scrape data. Alternatively, write the links to a  ",[1596,30147,30148],{"href":1091},"'Google sheet'"," and create a batch scraper for large-scale scraping. We call this design pattern 'Batch scraping' Learn more about ",[1596,30151,30153],{"href":30152},"\u002Fdocs\u002Ftutorials\u002Flong-bot-runs","'batching here'"," or try this ",[1596,30156,2153],{"href":30157},"\u002Fguides\u002Fbatching",". You can also find a ",[1596,30160,30161],{"href":17430},"'Link scraper template here.'",[1570,30163,30164],{},"You can use this step to scrape:",[1577,30166,30167,30175,30178],{},[1580,30168,30169,30171,30172],{},[1596,30170,21139],{"href":21140}," product page links, like ",[1596,30173,30174],{"href":21122},"Amazon Book pages",[1580,30176,30177],{},"Social media links",[1580,30179,30180,30181,30184,30185,30187],{},"LinkedIn profile links from ",[1596,30182,30183],{"href":20828},"Sales Navigator","- ",[1596,30186,7463],{"href":17430}," from any website",[1562,30189,30191],{"id":30190},"how-to-configure-the-get-a-list-of-links-to-pages-step","How to configure the Get a list of links to pages step",[1567,30193],{},[1611,30195,1803],{"id":28115},[1570,30197,30198],{},"Click 'Select' to choose the links you wish to scrape. The display will transform into the selector tool, and it will guide you by showing you how to select links from the webpage.",[1570,30200,30201],{},"The Multi-selector tool comes with several valuable features accessed by clicking custom:",[1577,30203,30204,30206,30208],{},[1580,30205,28126],{},[1580,30207,28129],{},[1580,30209,30210],{},"Pass CSS selectors in from data sources",[1570,30212,30213],{},[1596,30214,28137],{"href":1377},[1611,30216,30218],{"id":30217},"find-pager-optional","Find pager (optional)",[1570,30220,30221],{},"Select the 'Next' button for the pager, if there is one. If the button features text such as 'Next,' why not try the 'Use element text' method? Click 'Custom' on the selector toolbar, then click 'Use element text'.",[1611,30223,14938],{"id":30224},"max-results",[1570,30226,30227],{},"We set the max results to 20 to speed up the testing of your bots as you make them. It's best to do short runs while testing your bot.",[1611,30229,30231],{"id":30230},"wait-time-between-scrolls-ms","Wait time between scrolls (ms)",[1570,30233,30234],{},"Adjust the wait time between scrolls to increase or decrease the loading time of content. This feature is particularly useful when scrolling down listing pages with slow-loading content. However, insufficient waiting time could mean that content is not loaded. Therefore, experiment with caution.",[1611,30236,30238],{"id":30237},"no-of-retry-attempts-when-results-not-found","No. of retry attempts when results not found",[1570,30240,30241],{},"To speed up your runs, reduce the retry runs. But keep in mind content could be missed. Make sure to do some test runs.",[1611,30243,30245],{"id":30244},"minimum-wait-before-scraping-ms","Minimum wait before scraping (ms)",[1570,30247,30248],{},"To speed up your runs, reduce your wait time. However, keep in mind that some content may not have finished loading yet, which is why we wait.",[1611,30250,30252],{"id":30251},"page-number-to-start-scraping-on","Page number to start scraping on",[1570,30254,30255],{},"For paginated pages, you can specify a starting page. However, not all pages support this.",[1611,30257,30259],{"id":30258},"specify-exact-number-of-pixels-to-scroll","Specify exact number of pixels to scroll",[1570,30261,30262],{},"Instead of auto-scrolling set a pixel height to scroll.",[1611,30264,30266],{"id":30265},"force-a-re-scrape-after-each-page-change","Force a re-scrape after each page change",[1570,30268,30269],{},"Use if you are only getting the first page of results.",[1611,30271,27875],{"id":27874},[1570,30273,30274],{},"A preview of the scraped data.",{"title":1640,"searchDepth":1641,"depth":1641,"links":30276},[30277,30278],{"id":30135,"depth":1644,"text":30136},{"id":30190,"depth":1644,"text":30191,"children":30279},[30280,30281,30282,30283,30284,30285,30286,30287,30288,30289],{"id":28115,"depth":1641,"text":1803},{"id":30217,"depth":1641,"text":30218},{"id":30224,"depth":1641,"text":14938},{"id":30230,"depth":1641,"text":30231},{"id":30237,"depth":1641,"text":30238},{"id":30244,"depth":1641,"text":30245},{"id":30251,"depth":1641,"text":30252},{"id":30258,"depth":1641,"text":30259},{"id":30265,"depth":1641,"text":30266},{"id":27874,"depth":1641,"text":27875},"Scrape links from a webpage. Return results via a token for use in your automation.",{"category":321,"icon":30292},"WidgetDriverScrapeLinks.svg",{"title":1027,"description":30290},"69S6Ylrh1p1_nnVqLptoCRtB4Xcv-32CoLoofoDuM7g",{"id":30296,"title":1031,"body":30297,"date":1651,"description":30415,"extension":1653,"meta":30416,"navigation":1657,"order":1651,"path":1032,"seo":30417,"stem":1033,"__hash__":30418},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-a-list-of-links-url.md",{"type":1555,"value":30298,"toc":30399},[30299,30301,30303,30305,30319,30335,30337,30339,30342,30345,30347,30349,30351,30359,30363,30365,30367,30369,30371,30373,30375,30377,30379,30381,30383,30385,30387,30389,30391,30393,30395,30397],[1558,30300],{"video":30132},[1562,30302,30136],{"id":30135},[1567,30304],{},[1570,30306,30307,30308,30145,30310,30149,30312,30154,30314,30158,30316,30318],{},"Use this step to scrape links from listing-style pages. Then pass the links into a ",[1596,30309,30144],{"href":1040},[1596,30311,30148],{"href":1091},[1596,30313,30153],{"href":29066},[1596,30315,2153],{"href":30157},[1596,30317,30161],{"href":17430},"\nYou can use this step to scrape:",[1577,30320,30321,30327,30329],{},[1580,30322,30323,30171,30325],{},[1596,30324,21139],{"href":21140},[1596,30326,30174],{"href":21122},[1580,30328,30177],{},[1580,30330,30180,30331,30184,30333,30187],{},[1596,30332,30183],{"href":20828},[1596,30334,7463],{"href":17430},[1562,30336,30191],{"id":30190},[1567,30338],{},[1611,30340,5537],{"id":30341},"url",[1570,30343,30344],{},"Enter a URL or multiple URLs, each on their own line. You can also plugin data from other steps to provide URLs",[1611,30346,1803],{"id":28115},[1570,30348,30198],{},[1570,30350,30201],{},[1577,30352,30353,30355,30357],{},[1580,30354,28126],{},[1580,30356,28129],{},[1580,30358,30210],{},[1570,30360,30361],{},[1596,30362,28137],{"href":1377},[1611,30364,30218],{"id":30217},[1570,30366,30221],{},[1611,30368,14938],{"id":30224},[1570,30370,30227],{},[1611,30372,30231],{"id":30230},[1570,30374,30234],{},[1611,30376,30238],{"id":30237},[1570,30378,30241],{},[1611,30380,30245],{"id":30244},[1570,30382,30248],{},[1611,30384,30252],{"id":30251},[1570,30386,30255],{},[1611,30388,30259],{"id":30258},[1570,30390,30262],{},[1611,30392,30266],{"id":30265},[1570,30394,30269],{},[1611,30396,27875],{"id":27874},[1570,30398,30274],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":30400},[30401,30402],{"id":30135,"depth":1644,"text":30136},{"id":30190,"depth":1644,"text":30191,"children":30403},[30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414],{"id":30341,"depth":1641,"text":5537},{"id":28115,"depth":1641,"text":1803},{"id":30217,"depth":1641,"text":30218},{"id":30224,"depth":1641,"text":14938},{"id":30230,"depth":1641,"text":30231},{"id":30237,"depth":1641,"text":30238},{"id":30244,"depth":1641,"text":30245},{"id":30251,"depth":1641,"text":30252},{"id":30258,"depth":1641,"text":30259},{"id":30265,"depth":1641,"text":30266},{"id":27874,"depth":1641,"text":27875},"Scrape links from a URL. Return results via a token for use in your automation.",{"category":321,"icon":30292},{"title":1031,"description":30415},"KPMJIVTrqfVe8CgNYn8aZB-WNJY203yH1yfSzsDwS-0",{"id":30420,"title":1035,"body":30421,"date":1651,"description":30545,"extension":1653,"meta":30546,"navigation":1657,"order":1651,"path":1036,"seo":30548,"stem":1037,"__hash__":30549},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-data-from-url.md",{"type":1555,"value":30422,"toc":30529},[30423,30426,30430,30432,30435,30448,30464,30468,30470,30472,30474,30476,30479,30481,30489,30493,30495,30497,30499,30501,30503,30505,30507,30509,30511,30513,30515,30517,30519,30521,30523,30525,30527],[1558,30424],{"video":30425},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1283&end=1503&rel=0",[1562,30427,30429],{"id":30428},"what-to-use-the-get-data-from-a-url-step-for","What to use the Get data from a URL step for",[1567,30431],{},[1570,30433,30434],{},"The 'Get data from a URL' step in axiom.ai is a versatile web scraping tool that can extract data from tables, pages, and listing pages on almost any website or web application. It supports pagination and infinite scroll. The tool includes a point-and-click selector for easy content selection without coding. It's suitable for scraping data for simple reports or extensive databases.",[1570,30436,30437,30438,30441,30442,30444,30445,30318],{},"If you are looking to create a large scale scraper we recommend a design pattern called ",[1596,30439,30440],{"href":29066},"'batch scraping'."," You will also find a batch scraping ",[1596,30443,2153],{"href":30157}," here. If you just want to scrape links use this ",[1596,30446,30447],{"href":1028},"'scraper'.",[1577,30449,30450,30456,30458],{},[1580,30451,30452,30171,30454],{},[1596,30453,21139],{"href":21140},[1596,30455,30174],{"href":21122},[1580,30457,30177],{},[1580,30459,30180,30460,30184,30462,30187],{},[1596,30461,30183],{"href":20828},[1596,30463,7463],{"href":17430},[1562,30465,30467],{"id":30466},"how-to-configure-the-get-data-from-a-url-step","How to configure the Get data from a URL step",[1567,30469],{},[1611,30471,5537],{"id":30341},[1570,30473,30344],{},[1611,30475,1803],{"id":28115},[1570,30477,30478],{},"Click 'Select' to choose the data you wish to scrape. The display will transform into the selector tool, and it will guide you by showing you how to select data from the webpage.",[1570,30480,30201],{},[1577,30482,30483,30485,30487],{},[1580,30484,28126],{},[1580,30486,28129],{},[1580,30488,30210],{},[1570,30490,30491],{},[1596,30492,28137],{"href":1377},[1611,30494,30218],{"id":30217},[1570,30496,30221],{},[1611,30498,14938],{"id":30224},[1570,30500,30227],{},[1611,30502,30231],{"id":30230},[1570,30504,30234],{},[1611,30506,30238],{"id":30237},[1570,30508,30241],{},[1611,30510,30245],{"id":30244},[1570,30512,30248],{},[1611,30514,30252],{"id":30251},[1570,30516,30255],{},[1611,30518,30259],{"id":30258},[1570,30520,30262],{},[1611,30522,30266],{"id":30265},[1570,30524,30269],{},[1611,30526,27875],{"id":27874},[1570,30528,30274],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":30530},[30531,30532],{"id":30428,"depth":1644,"text":30429},{"id":30466,"depth":1644,"text":30467,"children":30533},[30534,30535,30536,30537,30538,30539,30540,30541,30542,30543,30544],{"id":30341,"depth":1641,"text":5537},{"id":28115,"depth":1641,"text":1803},{"id":30217,"depth":1641,"text":30218},{"id":30224,"depth":1641,"text":14938},{"id":30230,"depth":1641,"text":30231},{"id":30237,"depth":1641,"text":30238},{"id":30244,"depth":1641,"text":30245},{"id":30251,"depth":1641,"text":30252},{"id":30258,"depth":1641,"text":30259},{"id":30265,"depth":1641,"text":30266},{"id":27874,"depth":1641,"text":27875},"Scrape data from a URL including images, HTML, and text. Point and click to select the data you wish to extract.",{"category":321,"icon":30547},"WidgetDriverSmartScraper.svg",{"title":1035,"description":30545},"R6m1x4-iJKN9M65HLObQgKNwKaCzvby_71FOgxMR7YA",{"id":30551,"title":1039,"body":30552,"date":1651,"description":30668,"extension":1653,"meta":30669,"navigation":1657,"order":1651,"path":1040,"seo":30670,"stem":1041,"__hash__":30671},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-data-from-website.md",{"type":1555,"value":30553,"toc":30653},[30554,30557,30561,30563,30566,30575,30592,30596,30598,30600,30602,30604,30612,30616,30618,30620,30622,30625,30627,30629,30631,30633,30635,30637,30639,30641,30643,30645,30647,30649,30651],[1558,30555],{"video":30556},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2603&end=2833&rel=0",[1562,30558,30560],{"id":30559},"what-to-use-the-get-data-from-a-bots-current-page-step-for","What to use the Get data from a bot's current page step for",[1567,30562],{},[1570,30564,30565],{},"The 'Get data from a bot's current page' step in axiom.ai is a versatile web scraping tool that can extract data from tables, pages, and listing pages the bot is currently on. It supports pagination and infinite scroll. The tool includes a point-and-click selector for easy content selection without coding. It's suitable for scraping data for simple reports or extensive databases.",[1570,30567,30437,30568,30570,30571,30444,30573,30318],{},[1596,30569,30440],{"href":29066},"  You will also find a batch scraping ",[1596,30572,2153],{"href":30157},[1596,30574,30447],{"href":1028},[1577,30576,30577,30583,30585],{},[1580,30578,30579,30171,30581],{},[1596,30580,21139],{"href":21140},[1596,30582,30174],{"href":21122},[1580,30584,30177],{},[1580,30586,30587,30588,30184,30590,30187],{},"LinkedIn profiles links from ",[1596,30589,30183],{"href":20828},[1596,30591,7463],{"href":17430},[1562,30593,30595],{"id":30594},"how-to-configure-the-get-data-from-a-bots-current-page-step","How to configure the Get data from a bot's current page step",[1567,30597],{},[1611,30599,1803],{"id":28115},[1570,30601,30478],{},[1570,30603,30201],{},[1577,30605,30606,30608,30610],{},[1580,30607,28126],{},[1580,30609,28129],{},[1580,30611,30210],{},[1570,30613,30614],{},[1596,30615,28137],{"href":1377},[1611,30617,30218],{"id":30217},[1570,30619,30221],{},[1611,30621,14938],{"id":30224},[1570,30623,30624],{},"We set the max results to 1 to speed up the testing of your bots as you make them. It's best to do short runs while testing your bot.",[1611,30626,30231],{"id":30230},[1570,30628,30234],{},[1611,30630,30238],{"id":30237},[1570,30632,30241],{},[1611,30634,30245],{"id":30244},[1570,30636,30248],{},[1611,30638,30252],{"id":30251},[1570,30640,30255],{},[1611,30642,30259],{"id":30258},[1570,30644,30262],{},[1611,30646,30266],{"id":30265},[1570,30648,30269],{},[1611,30650,27875],{"id":27874},[1570,30652,30274],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":30654},[30655,30656],{"id":30559,"depth":1644,"text":30560},{"id":30594,"depth":1644,"text":30595,"children":30657},[30658,30659,30660,30661,30662,30663,30664,30665,30666,30667],{"id":28115,"depth":1641,"text":1803},{"id":30217,"depth":1641,"text":30218},{"id":30224,"depth":1641,"text":14938},{"id":30230,"depth":1641,"text":30231},{"id":30237,"depth":1641,"text":30238},{"id":30244,"depth":1641,"text":30245},{"id":30251,"depth":1641,"text":30252},{"id":30258,"depth":1641,"text":30259},{"id":30265,"depth":1641,"text":30266},{"id":27874,"depth":1641,"text":27875},"Scrape data from a webpage including images, HTML, and text. Point and click to select the data you wish to extract.",{"category":321,"icon":30547},{"title":1039,"description":30668},"0Dz94jJ2EaHwuKZI8VVS9Ky529giMvyYhSFumMtxd9E",{"id":30673,"title":1043,"body":30674,"date":1651,"description":30722,"extension":1653,"meta":30723,"navigation":1657,"order":1651,"path":1044,"seo":30725,"stem":1045,"__hash__":30726},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fgo-to-page.md",{"type":1555,"value":30675,"toc":30715},[30676,30679,30683,30685,30688,30691,30693,30704,30708,30710,30712],[1558,30677],{"video":30678},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1238&end=1283&rel=0",[1562,30680,30682],{"id":30681},"what-to-use-the-go-to-page-step","What to use the Go to page step",[1567,30684],{},[1570,30686,30687],{},"The 'Go to page' step loads a web page for automating web actions or scraping data.",[1562,30689,1575],{"id":30690},"you-can-use-this-step-to",[1567,30692],{},[1577,30694,30695,30701],{},[1580,30696,30697,30698,12717],{},"Load a page inside a nested ",[1596,30699,30700],{"href":1075},"Loop",[1580,30702,30703],{},"Open a web page to scrape data",[1562,30705,30707],{"id":30706},"how-to-configure-go-to-page","How to configure Go to page",[1567,30709],{},[1611,30711,1779],{"id":29230},[1570,30713,30714],{},"Enter a URL or click 'Insert data' to pass URLs from a data source.",{"title":1640,"searchDepth":1641,"depth":1641,"links":30716},[30717,30718,30719],{"id":30681,"depth":1644,"text":30682},{"id":30690,"depth":1644,"text":1575},{"id":30706,"depth":1644,"text":30707,"children":30720},[30721],{"id":29230,"depth":1641,"text":1779},"Load a web page. Pass tokens into this step to retrieve URLs from data sources like spreadsheets.",{"category":27933,"icon":30724},"WidgetDriverGoto.svg",{"title":1043,"description":30722},"_nnnlzfiQysVy3IiGKOJ5RCiB_SKriz05-9SuhBHV1Y",{"id":30728,"title":1047,"body":30729,"date":1651,"description":30816,"extension":1653,"meta":30817,"navigation":1657,"order":1651,"path":1048,"seo":30819,"stem":1049,"__hash__":30820},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fif-condtion.md",{"type":1555,"value":30730,"toc":30806},[30731,30734,30738,30740,30743,30745,30763,30767,30769,30771,30774,30776,30778,30780,30783,30786,30788,30791,30794,30797,30799],[1558,30732],{"video":30733},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=736&end=811&rel=0",[1562,30735,30737],{"id":30736},"what-to-use-the-if-condition-step-for","What to use the If condition step for",[1567,30739],{},[1570,30741,30742],{},"This logic step can execute a set of sub-steps depending on whether the condition returns true or false. For instance, you could use this step with the scraper step. If the scraper extracts some data, this step can check that data for a particular value. If the value is not found, the bot will skip the sub-steps contained within the condition.",[1570,30744,1575],{},[1577,30746,30747,30752,30758],{},[1580,30748,30749,30750,28395],{},"Execute steps based on a value found on a webpage by ",[1596,30751,2158],{"href":1040},[1580,30753,30754,30755,30757],{},"Entering data into a ",[1596,30756,28078],{"href":9110}," depending on a condition",[1580,30759,30760,30761],{},"Triggering another Axiom run, depending on a value found in a ",[1596,30762,5528],{"href":1091},[1562,30764,30766],{"id":30765},"how-to-configure-if-condition-step","How to configure If condition step",[1567,30768],{},[1611,30770,7884],{"id":28422},[1570,30772,30773],{},"Select the data to check for values.",[1611,30775,7899],{"id":28428},[1570,30777,28431],{},[1570,30779,28542],{},[1570,30781,30782],{},"Apply rule when match, Any word or All words or any condition when Numbers selected.",[1570,30784,30785],{},"Check - Match only the complete word if it appears in the data. Only the characters a-z A-Z 0-9 and _ are considered to be part of a word, all other characters are considered as being part of a word boundary.",[1611,30787,12948],{"id":28455},[1570,30789,30790],{},"Tick the box, to invert the condition to execute and execute the sub-steps if the condition fails.",[1611,30792,2245],{"id":30793},"add-step",[1570,30795,30796],{},"Add the sub-steps you wish to excute as part of the condition.",[1611,30798,28462],{"id":28461},[1570,30800,30801,30802,30805],{},"You can nest this step in ",[1596,30803,30804],{"href":1075},"loops"," or other IF conditions.",{"title":1640,"searchDepth":1641,"depth":1641,"links":30807},[30808,30809],{"id":30736,"depth":1644,"text":30737},{"id":30765,"depth":1644,"text":30766,"children":30810},[30811,30812,30813,30814,30815],{"id":28422,"depth":1641,"text":7884},{"id":28428,"depth":1641,"text":7899},{"id":28455,"depth":1641,"text":12948},{"id":30793,"depth":1641,"text":2245},{"id":28461,"depth":1641,"text":28462},"Execute a set of steps depending on an If condition. Pass data into this step to use when constructing your argument. IF Conditions can use text, numbers, or custom JavaScript.",{"category":28482,"icon":30818},"TemplateIfElse.svg",{"title":1047,"description":30816},"GiHmeeMjZBByktp2C0eOngs7eMDh9nePLLos47gkusY",{"id":30822,"title":1051,"body":30823,"date":1651,"description":30920,"extension":1653,"meta":30921,"navigation":1657,"order":1651,"path":1052,"seo":30922,"stem":1053,"__hash__":30923},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fif-else-condition.md",{"type":1555,"value":30824,"toc":30908},[30825,30827,30833,30835,30841,30844,30855,30861,30863,30866,30869,30872,30875,30878,30881,30888,30891,30894,30898,30901,30905],[1558,30826],{"video":30733},[1562,30828,27906,30830,12717],{"id":30829},"purpose-of-the-if-else-condition-step",[1681,30831,30832],{},"If Else condition",[1567,30834],{},[1570,30836,6680,30837,30840],{},[1681,30838,30839],{},"If Else Condition"," step allows you to execute different sets of actions based on whether a specified condition evaluates to true or false. In the condition, you can 'Insert Data' to check values from Google Sheets or other steps like 'Get Data from Current Page'. You can compare strings, numeric values, or even create custom conditions using JavaScript.",[1570,30842,30843],{},"You can use this step to compare values and execute different actions, such as:",[1577,30845,30846,30849,30852],{},[1580,30847,30848],{},"Checking if scraped data matches a specific value",[1580,30850,30851],{},"Verifying if the page URL contains 'login' and executing login steps",[1580,30853,30854],{},"Detecting if a button is present and clicking it",[1562,30856,28828,30858,30860],{"id":30857},"how-to-configure-the-if-else-condition-step",[1681,30859,30832],{}," Step",[1567,30862],{},[1611,30864,30865],{"id":28422},"Data to Check",[1570,30867,30868],{},"Select the data you want to evaluate.",[1611,30870,30871],{"id":28428},"Condition to Check",[1570,30873,30874],{},"You can check the data for words, a number or test if a JavaScript expression evaluates to true.",[1570,30876,30877],{},"Enter a list of words or numbers separated by commas, or provide data containing a list of values, one per row. Leave the field blank to match any value.",[1570,30879,30880],{},"You can apply the rule to match Any Word or All Words. Or any condition when Numbers selected.",[1570,30882,30883,30884,30887],{},"Enable the option to ",[1681,30885,30886],{},"Match complete word only",". This ensures only alphanumeric characters (a-z, A-Z, 0-9, and _) are considered part of a word, while other characters are treated as word boundaries.",[1611,30889,30890],{"id":28455},"Reverse Condition",[1570,30892,30893],{},"Check this box to invert the condition and execute sub-steps if the condition is false.",[1611,30895,30897],{"id":30896},"add-sub-steps","Add Sub-Steps",[1570,30899,30900],{},"Insert the steps you want to execute when the condition is met.",[1611,30902,30904],{"id":30903},"else-add-sub-steps","Else - Add Sub-Steps",[1570,30906,30907],{},"Insert the steps you want to execute when the condition is not met.",{"title":1640,"searchDepth":1641,"depth":1641,"links":30909},[30910,30912],{"id":30829,"depth":1644,"text":30911},"Purpose of the If Else condition step",{"id":30857,"depth":1644,"text":30913,"children":30914},"How to Configure the If Else condition Step",[30915,30916,30917,30918,30919],{"id":28422,"depth":1641,"text":30865},{"id":28428,"depth":1641,"text":30871},{"id":28455,"depth":1641,"text":30890},{"id":30896,"depth":1641,"text":30897},{"id":30903,"depth":1641,"text":30904},"Execute a set of steps depending on an If Else condition. Pass data into this step to use when constructing your argument. IF Conditions can use text, numbers, or custom JavaScript.",{"category":28482,"icon":30818},{"title":1051,"description":30920},"ChfzNdBK2Y2WTqK5wDMjaYg-vKrvNlz-uP5luv8Jr0U",{"id":30925,"title":1055,"body":30926,"date":1651,"description":30998,"extension":1653,"meta":30999,"navigation":1657,"order":1651,"path":1056,"seo":31001,"stem":1057,"__hash__":31002},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fimport-csv-file.md",{"type":1555,"value":30927,"toc":30989},[30928,30931,30935,30937,30943,30945,30960,30964,30966,30969,30972,30976,30979,30981,30984,30986],[1558,30929],{"video":30930},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2143&end=2195&rel=0",[1562,30932,30934],{"id":30933},"what-to-use-the-import-csv-file-step-for","What to use the Import CSV File step for",[1567,30936],{},[1570,30938,30939,30940,30942],{},"This step imports data from a CSV into your Axiom. You can then use the data in other automation steps, such as web actions like ",[1596,30941,16980],{"href":1012}," step. For example, import data from a CSV to upload via a web form.",[1570,30944,1575],{},[1577,30946,30947,30950,30957],{},[1580,30948,30949],{},"Import data for data entry",[1580,30951,30952,30953,30956],{},"Upload multiple CSVs to merge into single CSV for ",[1596,30954,30955],{"href":1016},"export","- Import CSV data to upload into a CRM",[1580,30958,30959],{},"Import data to filter and clean",[1562,30961,30963],{"id":30962},"how-to-configure-the-import-csv-file-step","How to configure the Import CSV File Step",[1567,30965],{},[1611,30967,7145],{"id":30968},"import-csv",[1570,30970,30971],{},"Select the CSV file to upload. Manually enter the file path or use 'Click to select.' You can also use 'Insert data' to pass a file name or path from another step as a variable. Combine a string and variable to create a file path if required. If you see corrupted characters, please ensure the file is encoded in UTF-8 format.",[1611,30973,30975],{"id":30974},"fist-cell","Fist cell",[1570,30977,30978],{},"Use the first and last cell settings to specify the data range you wish to import. Will use A1 if no value provided.",[1611,30980,6877],{"id":28035},[1570,30982,30983],{},"Will use ZZ if no value provided",[1611,30985,27875],{"id":27874},[1570,30987,30988],{},"You will see a preview of the imported CSV data.",{"title":1640,"searchDepth":1641,"depth":1641,"links":30990},[30991,30992],{"id":30933,"depth":1644,"text":30934},{"id":30962,"depth":1644,"text":30963,"children":30993},[30994,30995,30996,30997],{"id":30968,"depth":1641,"text":7145},{"id":30974,"depth":1641,"text":30975},{"id":28035,"depth":1641,"text":6877},{"id":27874,"depth":1641,"text":27875},"Import data from a CSV. Pass to other steps via a token for use in your automation.",{"category":27792,"icon":31000},"WidgetImportCSV.svg",{"title":1055,"description":30998},"lwrZdiH6ZPqcnPOcWYn5RgrAhOdZ-YGrL2lvHmxkNaU",{"id":1553,"title":309,"body":31004,"date":1651,"description":1652,"extension":1653,"meta":31063,"navigation":1657,"order":1651,"path":1059,"seo":31064,"stem":1060,"__hash__":1659},{"type":1555,"value":31005,"toc":31054},[31006,31008,31010,31012,31014,31016,31030,31034,31036,31038,31040,31042,31044,31046,31048,31050,31052],[1558,31007],{"video":1560},[1562,31009,1565],{"id":1564},[1567,31011],{},[1570,31013,1572],{},[1570,31015,1575],{},[1577,31017,31018,31020,31022,31024,31026],{},[1580,31019,1582],{},[1580,31021,1585],{},[1580,31023,1588],{},[1580,31025,1591],{},[1580,31027,1594,31028],{},[1596,31029,161],{"href":1111},[1570,31031,1600,31032],{},[1596,31033,1603],{"href":82},[1562,31035,1607],{"id":1606},[1567,31037],{},[1611,31039,1614],{"id":1613},[1570,31041,1617],{},[1611,31043,1621],{"id":1620},[1570,31045,1624],{},[1611,31047,1628],{"id":1627},[1570,31049,1631],{},[1611,31051,1635],{"id":1634},[1570,31053,1638],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":31055},[31056,31057],{"id":1564,"depth":1644,"text":1565},{"id":1606,"depth":1644,"text":1607,"children":31058},[31059,31060,31061,31062],{"id":1613,"depth":1641,"text":1614},{"id":1620,"depth":1641,"text":1621},{"id":1627,"depth":1641,"text":1628},{"id":1634,"depth":1641,"text":1635},{"category":1655,"icon":1656},{"title":309,"description":1652},{"id":31066,"title":1062,"body":31067,"date":1651,"description":31144,"extension":1653,"meta":31145,"navigation":1657,"order":1651,"path":1063,"seo":31146,"stem":1064,"__hash__":31147},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Finteract-with-a-pages-interface.md",{"type":1555,"value":31068,"toc":31136},[31069,31073,31075,31082,31085,31111,31115,31117,31120,31123,31126,31129,31133],[1562,31070,31072],{"id":31071},"what-to-use-the-interact-step","What to use the Interact step",[1567,31074],{},[1570,31076,31077,31078,31081],{},"This step is now defunct. Replaced by the Loop step. The 'Interact with a page's interface' step has sub-steps that automate web actions like clicking on elements or ",[1596,31079,31080],{"href":1012},"'Entering text'",". However, from Axiom 4.0, this step is no longer used, it is replaced by new methods for looping and new nesting features. Although this step will still function, all Axioms created with it will continue to work.",[1570,31083,31084],{},"You can use this step to combine steps:",[1577,31086,31087,31093,31099,31105,31108],{},[1580,31088,31089,31090],{},"To automate ",[1596,31091,31092],{"href":8650},"'data entry'",[1580,31094,31095,31096],{},"To scrape multiple ",[1596,31097,31098],{"href":16553},"'pages'",[1580,31100,31101,31102],{},"Social media automation like this ",[1596,31103,31104],{"href":12771},"'template'",[1580,31106,31107],{},"To automate any website actions such as clicks in Chrome",[1580,31109,31110],{},"To automate file downloads.",[1562,31112,31114],{"id":31113},"how-to-configure-the-interact-step","How to configure the Interact step",[1567,31116],{},[1611,31118,667],{"id":31119},"loop-through-data",[1570,31121,31122],{},"Repeat for each item in another step's data. Click 'Insert Data' and select the data you wish to loop through.",[1611,31124,15585],{"id":31125},"loop-through-all",[1570,31127,31128],{},"Toggle ON this to loop through all rows of data, this function can be disabled to use first row only.",[1611,31130,31132],{"id":31131},"add-a-sub-step","Add a sub step",[1570,31134,31135],{},"Add sub steps required to build your web automation.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31137},[31138,31139],{"id":31071,"depth":1644,"text":31072},{"id":31113,"depth":1644,"text":31114,"children":31140},[31141,31142,31143],{"id":31119,"depth":1641,"text":667},{"id":31125,"depth":1641,"text":15585},{"id":31131,"depth":1641,"text":31132},"This step is now defunct. Replaced by the Loop step.",{"category":30700,"icon":29727},{"title":1062,"description":31144},"DmkXfP8SjtKwRhAYBgpynBoMCeS94SwZoOtLPgDFoSk",{"id":31149,"title":1066,"body":31150,"date":1651,"description":31239,"extension":1653,"meta":31240,"navigation":1657,"order":1651,"path":1067,"seo":31242,"stem":1068,"__hash__":31243},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fjoin-different-data-sources.md",{"type":1555,"value":31151,"toc":31228},[31152,31155,31159,31161,31164,31166,31183,31187,31189,31193,31196,31200,31203,31207,31210,31214,31217,31221,31223,31225],[1558,31153],{"video":31154},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=661&end=706&rel=0",[1562,31156,31158],{"id":31157},"what-to-use-the-join-different-data-sources-based-on-matching-columns-step-for","What to use the Join different data sources based on matching columns step for",[1567,31160],{},[1570,31162,31163],{},"Use this to join data gathered from different sources together. A shared column is used to combine the two. For example, use this to join product info from different e-commerce sites or to merge a Google Sheet with a CSV.",[1570,31165,1575],{},[1577,31167,31168,31177],{},[1580,31169,31170,31171,31173,31174,31176],{},"Merge a ",[1596,31172,21695],{"href":1056}," with a ",[1596,31175,28017],{"href":1091},"- Join data from separate ecommerce store",[1580,31178,31179,31180],{},"Merge ",[1596,31181,31182],{"href":1040},"scraped data sets",[1562,31184,31186],{"id":31185},"how-to-configure-the-join-different-data-sources-based-on-matching-columns-step","How to configure the Join different data sources based on matching columns step",[1567,31188],{},[1611,31190,31192],{"id":31191},"base-data","Base data",[1570,31194,31195],{},"Enter the base data to join with another.",[1611,31197,31199],{"id":31198},"base-data-column","Base data column",[1570,31201,31202],{},"Column of data to use as the basis of the join. For example, if you want to join based on company name, enter the column number or letter which contains the company name here.",[1611,31204,31206],{"id":31205},"join-data","Join data",[1570,31208,31209],{},"Enter the data you want to join with the base data.",[1611,31211,31213],{"id":31212},"column","Column",[1570,31215,31216],{},"Specify a particular column of the base data to always match against. Leave this blank to match with any column.",[1611,31218,31220],{"id":31219},"fuzzyness-of-the-match","Fuzzyness of the match",[1570,31222,31216],{},[1611,31224,27875],{"id":27874},[1570,31226,31227],{},"A preview results returned by this step.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31229},[31230,31231],{"id":31157,"depth":1644,"text":31158},{"id":31185,"depth":1644,"text":31186,"children":31232},[31233,31234,31235,31236,31237,31238],{"id":31191,"depth":1641,"text":31192},{"id":31198,"depth":1641,"text":31199},{"id":31205,"depth":1641,"text":31206},{"id":31212,"depth":1641,"text":31213},{"id":31219,"depth":1641,"text":31220},{"id":27874,"depth":1641,"text":27875},"Merge data from multiple sources into a single dataset by matching columns. Used to combine data from large, database-style sets.",{"category":27892,"icon":31241},"WidgetFilterMerge.svg",{"title":1066,"description":31239},"0A0pSC-s7pxGyhWl_Ra9kXJW-Ky3Wap1C7u-Ng2ID9o",{"id":31245,"title":1070,"body":31246,"date":1651,"description":31292,"extension":1653,"meta":31293,"navigation":1657,"order":1651,"path":1071,"seo":31295,"stem":1072,"__hash__":31296},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fjump-step.md",{"type":1555,"value":31247,"toc":31285},[31248,31251,31255,31257,31264,31270,31274,31276,31278,31281,31283],[1558,31249],{"video":31250},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=225&end=266&rel=0",[1562,31252,31254],{"id":31253},"what-to-use-the-jump-to-another-step-step-for","What to use the Jump to another step step for",[1567,31256],{},[1570,31258,31259,31260,31263],{},"The jump step is used to create simple loops or to skip steps that you do not want to execute. It works well in conjunction with the ",[1596,31261,31262],{"href":940},"Conditional jump step.","\nWe use the jump step as part of a technique called batching. This involves looping through steps using a jump step. For example, we start by reading a single row from a Google Sheet; we execute automation using that row's data. Then, we delete the row before moving on to read a new row.",[1570,31265,28406,31266,28410,31268,28413],{},[1596,31267,1070],{"href":28409},[1596,31269,667],{"href":1075},[1562,31271,31273],{"id":31272},"how-to-configure-the-jump-to-another-step","How to configure the Jump to another step",[1567,31275],{},[1611,31277,7234],{"id":28443},[1570,31279,31280],{},"Enter the number of the step to jump to if the value is found. You can jump up or jump down.",[1611,31282,7239],{"id":28449},[1570,31284,28452],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":31286},[31287,31288],{"id":31253,"depth":1644,"text":31254},{"id":31272,"depth":1644,"text":31273,"children":31289},[31290,31291],{"id":28443,"depth":1641,"text":7234},{"id":28449,"depth":1641,"text":7239},"Automations run steps in sequence. Use this step to break that sequence and jump to a step outside the order.",{"category":28482,"icon":31294},"WidgetAlwaysJump.svg",{"title":1070,"description":31292},"-UHjdgGm39r1wPqxMGNHN1zM6pqZUskve-ny3oZV838",{"id":31298,"title":1074,"body":31299,"date":1651,"description":31370,"extension":1653,"meta":31371,"navigation":1657,"order":1651,"path":1075,"seo":31372,"stem":1076,"__hash__":31373},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Floop.md",{"type":1555,"value":31300,"toc":31361},[31301,31304,31308,31310,31316,31318,31337,31341,31343,31345,31347,31349,31351,31353,31356,31358],[1558,31302],{"video":31303},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=40&end=101&rel=0",[1562,31305,31307],{"id":31306},"what-to-use-the-loop-step-for","What to use the Loop step for",[1567,31309],{},[1570,31311,31312,31313],{},"The Loop step iterates through any sub-steps contained within it. Loop step can also be nested. Use it to loop through data, such as rows from a Google Sheet. Click to follow a ",[1596,31314,31315],{"href":668},"tutorial on looping.",[1570,31317,1575],{},[1577,31319,31320],{},[1580,31321,31322,31323,31325,31326,31329,31330,31333,31334],{},"Loop through data in a ",[1596,31324,5528],{"href":1091}," to create ",[1596,31327,31328],{"href":11667},"Social Posts","- Enter data into ",[1596,31331,31332],{"href":9110},"Web forms","- Create ",[1596,31335,31336],{"href":2134},"ChatGPT Web scrapers",[1562,31338,31340],{"id":31339},"how-to-use-the-loop-step","How to use the Loop step",[1567,31342],{},[1611,31344,667],{"id":31119},[1570,31346,31122],{},[1611,31348,15585],{"id":31125},[1570,31350,31128],{},[1611,31352,2245],{"id":30793},[1570,31354,31355],{},"Add the sub-steps you wish to execute in the loop.",[1611,31357,28462],{"id":28461},[1570,31359,31360],{},"You can nest loops up to four levels.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31362},[31363,31364],{"id":31306,"depth":1644,"text":31307},{"id":31339,"depth":1644,"text":31340,"children":31365},[31366,31367,31368,31369],{"id":31119,"depth":1641,"text":667},{"id":31125,"depth":1641,"text":15585},{"id":30793,"depth":1641,"text":2245},{"id":28461,"depth":1641,"text":28462},"Loop through sub-steps inside a loop. Set data to loop through, such as URLs in a Google Sheet. Pass data into sub-steps using tokens.",{"category":30700,"icon":29727},{"title":1074,"description":31370},"0Pv7PkhdVhQKze3rC-4-SZ-2ku4anNfB34hvUEb5dlc",{"id":31375,"title":1078,"body":31376,"date":1651,"description":31442,"extension":1653,"meta":31443,"navigation":1657,"order":1651,"path":1079,"seo":31445,"stem":1080,"__hash__":31446},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fmouse-click-and-drag.md",{"type":1555,"value":31377,"toc":31432},[31378,31381,31385,31387,31390,31392,31397,31401,31403,31407,31410,31414,31417,31419,31422,31424,31427,31429],[1558,31379],{"video":31380},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=190&end=225&rel=0",[1562,31382,31384],{"id":31383},"what-to-use-the-mouse-click-and-drag-step-for","What to use the Mouse click and drag step for",[1567,31386],{},[1570,31388,31389],{},"Instruct the bot to move the mouse to the start coordinates then click and drag to the end coordinates. Use the step for web automation in particular dragging sliders into position.",[1570,31391,1575],{},[1577,31393,31394],{},[1580,31395,31396],{},"Drag Sliders",[1562,31398,31400],{"id":31399},"how-to-configure-the-mouse-click-and-drag-step","How to configure the Mouse click and drag step",[1567,31402],{},[1611,31404,31406],{"id":31405},"keywords","Keywords",[1570,31408,31409],{},"Enter a list of keywords to search on, each separated by a comma.",[1611,31411,31413],{"id":31412},"email-address","Email address",[1570,31415,31416],{},"Enter the email address of the Gmail account to be searched, leave blank to use the default Gmail address. You must be logged into a Gmail account in order to search it, if you are not logged into the specified account then the default Gmail account will be searched instead.",[1611,31418,3268],{"id":29236},[1570,31420,31421],{},"Set a folder to download into (please note currently only one new folder can be created at a time)",[1611,31423,14938],{"id":30224},[1570,31425,31426],{},"Set a maximum number of emails to retrieve.",[1611,31428,27875],{"id":27874},[1570,31430,31431],{},"A preview of the Gmail data gathered.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31433},[31434,31435],{"id":31383,"depth":1644,"text":31384},{"id":31399,"depth":1644,"text":31400,"children":31436},[31437,31438,31439,31440,31441],{"id":31405,"depth":1641,"text":31406},{"id":31412,"depth":1641,"text":31413},{"id":29236,"depth":1641,"text":3268},{"id":30224,"depth":1641,"text":14938},{"id":27874,"depth":1641,"text":27875},"Replicate dragging objects with a mouse by recording coordinates. Use to automate drag-and-drop actions on a page.",{"category":28162,"icon":31444},"WidgetDriverMouseClickDrag.svg",{"title":1078,"description":31442},"AFJc9pGgxfs3ChPNXmCThjHuXL3eUaKUb4guM7a7-7Q",{"id":31448,"title":1082,"body":31449,"date":1651,"description":31496,"extension":1653,"meta":31497,"navigation":1657,"order":1651,"path":1083,"seo":31498,"stem":1084,"__hash__":31499},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fmove-a-google-sheet.md",{"type":1555,"value":31450,"toc":31489},[31451,31455,31457,31464,31466,31468,31471,31475,31477,31480,31484,31486],[1562,31452,31454],{"id":31453},"introduction","Introduction",[1567,31456],{},[1570,31458,31459,31460,31463],{},"The \"Move a Google Sheet to a new folder in Google Drive\" step can be used to move a Google Sheet within your Google Drive account. This can be used in combination with the ",[1596,31461,10972],{"href":31462},".\u002Fcreate-a-new-google-sheet"," step to create sheets and then move them based on actions within your automation.",[1562,31465,28110],{"id":28109},[1567,31467],{},[1570,31469,31470],{},"This step has two configuration options that are required.",[1611,31472,31474],{"id":31473},"sheet-to-move","Sheet to move",[1567,31476],{},[1570,31478,31479],{},"Select the spreadsheet or paste in a URL of the sheet that you wish the step to move.",[1562,31481,31483],{"id":31482},"folder-url","Folder URL",[1567,31485],{},[1570,31487,31488],{},"Enter the URL of the destination folder for the spreadsheet. This must be created before the step is run and the folder must continue to exist for the duration of the automation runs.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31490},[31491,31492,31495],{"id":31453,"depth":1644,"text":31454},{"id":28109,"depth":1644,"text":28110,"children":31493},[31494],{"id":31473,"depth":1641,"text":31474},{"id":31482,"depth":1644,"text":31483},"Used to move a Google Sheet within your Google Drive account.",{"category":29038,"icon":29039},{"title":1082,"description":31496},"qqPEZVaFwlR66l34cjHjxlpAW6wvhDo9KYXPIEI_xkk",{"id":31501,"title":1086,"body":31502,"date":1651,"description":31587,"extension":1653,"meta":31588,"navigation":1657,"order":1651,"path":1087,"seo":31590,"stem":1088,"__hash__":31591},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fpress-key.md",{"type":1555,"value":31503,"toc":31578},[31504,31507,31511,31513,31519,31536,31546,31550,31552,31554,31557,31559,31562,31566,31569,31571,31574],[1558,31505],{"video":31506},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=101&end=166?rel=0",[1562,31508,31510],{"id":31509},"what-to-use-the-press-keys-step-for","What to use the Press key(s) step for",[1567,31512],{},[1570,31514,31515,31516,27815],{},"Press key(s) is one of the most useful steps in axiom.ai's stepbox. This feature lets you record keystrokes and replay them later, which is especially useful for web automation. To learn more about how useful the Press key(s) step is read our ",[1596,31517,31518],{"href":549},"docs.",[1577,31520,31521,31524,31527,31530,31533],{},[1580,31522,31523],{},"Record Tabs to move between form elements",[1580,31525,31526],{},"Click a button with a Return",[1580,31528,31529],{},"Enter a date into a form input",[1580,31531,31532],{},"Up and down arrows can scroll pages",[1580,31534,31535],{},"Interact with pop-ups",[1570,31537,31538,31539,31541,31542,31545],{},"This step works well in tandem with the ",[1596,31540,293],{"href":1012}," step when automating data entry. Learn to observe where the cursor is loaded on a web page by default. If you're sending ",[1596,31543,31544],{"href":12771},"DMs on Instagram"," the cursor is loaded into the message box so you can enter text and record a \"Return\" keypress to send the message.",[1562,31547,31549],{"id":31548},"how-to-configure-the-press-keys-step","How to configure the Press key(s) step",[1567,31551],{},[1611,31553,6962],{"id":3620},[1570,31555,31556],{},"Click record, then press the keys you want the bot to press. You can record a sequence of keys. Please note key combinations or special clicks can vary for Mac, Windows and Linux (The cloud runs on Linux).",[1611,31558,2109],{"id":3468},[1570,31560,31561],{},"Input keystrokes directly from data sources such as WebHooks and Google Sheets. However, each keystroke must be separated by a delimiter, or Axiom will interpret them as a single keystroke.",[1611,31563,31565],{"id":31564},"delimiter","Delimiter",[1570,31567,31568],{},"Customise your delimiter, use this character to separate individual key presses. Make sure this is present between each desired key press in the given data, or this step will not work properly.",[1611,31570,29876],{"id":29875},[1570,31572,31573],{},"Set a delay between each key press (in milliseconds).",[1570,31575,29770,31576,1696],{},[1596,31577,29774],{"href":29773},{"title":1640,"searchDepth":1641,"depth":1641,"links":31579},[31580,31581],{"id":31509,"depth":1644,"text":31510},{"id":31548,"depth":1644,"text":31549,"children":31582},[31583,31584,31585,31586],{"id":3620,"depth":1641,"text":6962},{"id":3468,"depth":1641,"text":2109},{"id":31564,"depth":1641,"text":31565},{"id":29875,"depth":1641,"text":29876},"Record keyboard input. Include actions like pressing Return to submit a form or Tab to move between fields. Used to replay typed input as part of an automation.",{"category":28162,"icon":31589},"WidgetDriverKeyDown.svg",{"title":1086,"description":31587},"lQA-aIKqF818sVijNI-C3Q13vSyrUxi5_f873KJ5lGM",{"id":31593,"title":1090,"body":31594,"date":1651,"description":31685,"extension":1653,"meta":31686,"navigation":1657,"order":1651,"path":1091,"seo":31688,"stem":1092,"__hash__":31689},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-a-google-sheet-step.md",{"type":1555,"value":31595,"toc":31675},[31596,31599,31603,31605,31608,31619,31621,31640,31643,31647,31649,31651,31653,31655,31658,31660,31663,31665,31668,31672],[1558,31597],{"video":31598},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=310&end=366?rel=0",[1562,31600,31602],{"id":31601},"what-to-use-the-read-data-from-a-google-sheet-step-for","What to use the Read data from a Google Sheet step for",[1567,31604],{},[1570,31606,31607],{},"The read from a Google sheet step is most commonly used to loop through a list of URLs for scraping content and passing data to web forms. It's a common starting point for most bots made with Axiom. When used in combination with the 'Loop' step, data can be passed without code from the sheet to any website or web application.",[1570,31609,31610,31611,31613,31614,31616,31617],{},"If you are looking to create a process with thousands of rows, we recommend a design pattern called ",[1596,31612,30440],{"href":29066}," 😊 You will also find a batch ",[1596,31615,2153],{"href":30157}," here. If you just want to scrape links, use this ",[1596,31618,30447],{"href":1028},[1570,31620,1575],{},[1577,31622,31623,31630,31633],{},[1580,31624,31625,31626,31629],{},"Combine with the ",[1596,31627,31628],{"href":1040},"'Get data from a URL'"," step to loop through links and scrape pages",[1580,31631,31632],{},"Import data to output as a CSV",[1580,31634,31635,31636,31639],{},"Read data to input in a form via the ",[1596,31637,31638],{"href":1063},"'Interact'"," and ['Enter text'](\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fenter-text\u002F steps.",[1570,31641,31642],{},"If you have an Excel sheet, don't worry. They can be imported into Google Sheets and converted with a couple of clicks.",[1562,31644,31646],{"id":31645},"how-to-configure-the-read-data-from-a-google-sheet-step","How to configure the Read data from a Google Sheet step",[1567,31648],{},[1611,31650,1749],{"id":28017},[1570,31652,29085],{},[1611,31654,1755],{"id":28023},[1570,31656,31657],{},"Optionally specify a sheet name to read from. Sheets are different tabs visible at the bottom of your Google doc; enter the name that appears on the tab to specify the sheet. Leaving this blank will use the first sheet in the document.",[1611,31659,8780],{"id":28029},[1570,31661,31662],{},"Enter a column and row number if you wish to start your read operation from a particular cell in your Google Sheet. For example, 'B10' will\nmean your bot will start reading data from the second column on the 10th row.",[1611,31664,1998],{"id":28035},[1570,31666,31667],{},"Enter a column and row number combination if you wish to stop the read operation at a particular cell in your Google Sheet. For example, 'B100' will\nmean your bot will stop reading data at the 100th row in the second column.",[1611,31669,31671],{"id":31670},"continue-when-empty","Continue when empty",[1570,31673,31674],{},"If this is turned on, the automation will proceed even if the input sheet is empty otherwise will throw an error.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31676},[31677,31678],{"id":31601,"depth":1644,"text":31602},{"id":31645,"depth":1644,"text":31646,"children":31679},[31680,31681,31682,31683,31684],{"id":28017,"depth":1641,"text":1749},{"id":28023,"depth":1641,"text":1755},{"id":28029,"depth":1641,"text":8780},{"id":28035,"depth":1641,"text":1998},{"id":31670,"depth":1641,"text":31671},"Fetch data from a Google Sheet to use in your automation. Pass it into steps using tokens.",{"category":27792,"icon":31687},"WidgetReadGoogleSheet.svg",{"title":1090,"description":31685},"s5KL2Gw5vfRAvBhxvl9i65ENiPSYqQltq-ET3jf09OQ",{"id":31691,"title":1094,"body":31692,"date":1651,"description":31766,"extension":1653,"meta":31767,"navigation":1657,"order":1651,"path":1095,"seo":31769,"stem":1096,"__hash__":31770},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-airtable.md",{"type":1555,"value":31693,"toc":31759},[31694,31698,31700,31703,31706,31717,31719,31733,31740,31744,31746,31749,31752,31756],[1562,31695,31697],{"id":31696},"what-to-use-the-read-data-from-airtable-step-for","What to use the Read data from Airtable step for",[1567,31699],{},[1570,31701,31702],{},"The read data from airtable step is used to loop through rows of data, such as lists of URLs, so you can scrape content or send data to web forms.",[1570,31704,31705],{},"It is often the starting point for many bots built with Axiom. When combined with the loop step, it allows you to pass data from a table to a website or web app without writing code.",[1570,31707,31708,31709,31712,31713,31716],{},"If you need to process thousands of rows, use a pattern called ",[1596,31710,31711],{"href":30157},"batch scraping",". This helps you run tasks in smaller chunks. You can also use a batch template for this. If your goal is only to scrape links, use the ",[1596,31714,31715],{"href":1028},"scraper"," template instead.",[1570,31718,1575],{},[1577,31720,31721,31725,31727],{},[1580,31722,31625,31723,31629],{},[1596,31724,31628],{"href":1040},[1580,31726,31632],{},[1580,31728,31635,31729,2094,31731,12276],{},[1596,31730,31638],{"href":1063},[1596,31732,16980],{"href":1012},[1570,31734,31735,31736,31739],{},"If you have an ",[1596,31737,31738],{"href":1099},"Excel sheet",", use the excel step.",[1562,31741,31743],{"id":31742},"how-to-configure-the-read-data-from-airtable-step","How to configure the Read data from Airtable step",[1567,31745],{},[1611,31747,18077],{"id":31748},"base-id",[1570,31750,31751],{},"Input your airtable base ID.",[1611,31753,31755],{"id":31754},"table-id-or-name","Table ID or name",[1570,31757,31758],{},"Input the table ID or name.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31760},[31761,31762],{"id":31696,"depth":1644,"text":31697},{"id":31742,"depth":1644,"text":31743,"children":31763},[31764,31765],{"id":31748,"depth":1641,"text":18077},{"id":31754,"depth":1641,"text":31755},"Import data from Airtable into your automations.",{"category":27792,"icon":31768},"WidgetReadAirtable.svg",{"title":1094,"description":31766},"TWnMm-Rmblgfjo4YZ-NKYzpmQEqeQq5aQxwxtojTRbE",{"id":31772,"title":1098,"body":31773,"date":1651,"description":1640,"extension":1653,"meta":31839,"navigation":1657,"order":1651,"path":1099,"seo":31841,"stem":1100,"__hash__":31842},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-data-from-excel.md",{"type":1555,"value":31774,"toc":31829},[31775,31779,31781,31784,31787,31798,31802,31804,31806,31809,31811,31814,31816,31819,31821,31824,31826],[1562,31776,31778],{"id":31777},"what-to-use-the-read-data-from-an-excel-sheet-step-for","What to use the Read data from an Excel sheet step for",[1567,31780],{},[1570,31782,31783],{},"Use this step to read data from an Excel spreadsheet, useful for loading data into your automations.",[1570,31785,31786],{},"You can use this step for:",[1577,31788,31789,31792,31795],{},[1580,31790,31791],{},"Importing data to loop through.",[1580,31793,31794],{},"Reading in authentication credentials to log into websites.",[1580,31796,31797],{},"Reading in data to input into forms.",[1562,31799,31801],{"id":31800},"how-to-configure-the-read-data-from-an-excel-sheet-step","How to configure the Read data from an Excel sheet step",[1567,31803],{},[1611,31805,1749],{"id":28017},[1570,31807,31808],{},"Enter a URL for the sheet that you wish to read from, or enter the name in the search box.",[1611,31810,1755],{"id":28023},[1570,31812,31813],{},"The name of the sheet within the workspace to read data from.",[1611,31815,8780],{"id":28029},[1570,31817,31818],{},"The first column and row that you wish to start your read operation. This should be formatted as \"column:row\", for example, \"B10\". The column must be capitalised.",[1611,31820,6877],{"id":28035},[1570,31822,31823],{},"The last column and row that you wish to finish your read operation on. This should be formatted as \"column:row\", for example, \"B10\". The column must be capitalised.",[1611,31825,31671],{"id":31670},[1570,31827,31828],{},"If enabled, the automation will proceed even if the sheet is empty, otherwise, this will cause an error.",{"title":1640,"searchDepth":1641,"depth":1641,"links":31830},[31831,31832],{"id":31777,"depth":1644,"text":31778},{"id":31800,"depth":1644,"text":31801,"children":31833},[31834,31835,31836,31837,31838],{"id":28017,"depth":1641,"text":1749},{"id":28023,"depth":1641,"text":1755},{"id":28029,"depth":1641,"text":8780},{"id":28035,"depth":1641,"text":6877},{"id":31670,"depth":1641,"text":31671},{"category":27792,"videoguide":1651,"imagestep":31840,"icon":31687},"\u002Fstep-images\u002Fread-sheet.png",{"title":1098,"description":1640},"8OemP-m3g8w9EuUIJtueWG9iNvVynnA_OpxG5c6IAAA",{"id":31844,"title":1102,"body":31845,"date":1651,"description":1640,"extension":1653,"meta":31904,"navigation":1657,"order":1651,"path":1103,"seo":31908,"stem":1104,"__hash__":31909},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-file-from-google-drive.md",{"type":1555,"value":31846,"toc":31897},[31847,31851,31853,31856,31859,31870,31873,31875,31877,31880,31884,31887,31891,31894],[1562,31848,31850],{"id":31849},"read-file-from-google-drive","Read file from Google Drive",[1567,31852],{},[1570,31854,31855],{},"The \"Read file from Google Drive\" step can be used to read files from your local computer.",[1570,31857,31858],{},"This step allows for reading in of text files, such as:",[1577,31860,31861,31864,31867],{},[1580,31862,31863],{},".txt, .html, .json, .csv",[1580,31865,31866],{},"PDF",[1580,31868,31869],{},"Microsoft Word (.docx)",[1570,31871,31872],{},"This step will output the content of your file as a single piece of unformatted data.",[1562,31874,28110],{"id":28109},[1567,31876],{},[1570,31878,31879],{},"Learn how to configure the \"Read file from Google Drive\" step.",[1611,31881,31883],{"id":31882},"google-drive-file-url","Google Drive file URL",[1570,31885,31886],{},"The URL for the file from your Google Drive. This URL should include the ID of your file and often ends with \"\u002Fview\" followed by some parameters.",[1611,31888,31890],{"id":31889},"local-folder","Local folder",[1570,31892,31893],{},"If you are using axiom.ai locally using the desktop application, this option should be enabled to use a local folder as an intermediary step for the file download.",[2227,31895],{"src":31896},"\u002Fdocs\u002Freference\u002Fsteps\u002Fstep-read-file-from-google-drive.png",{"title":1640,"searchDepth":1641,"depth":1641,"links":31898},[31899,31900],{"id":31849,"depth":1644,"text":31850},{"id":28109,"depth":1644,"text":28110,"children":31901},[31902,31903],{"id":31882,"depth":1641,"text":31883},{"id":31889,"depth":1641,"text":31890},{"category":29038,"videoguide":1651,"imagestep":31905,"summary":31906,"icon":31907},"\u002Fstep-images\u002Fread-file-from-google-drive.png","Learn how to use the Read file from Google Drive step","WidgetDriverUploadFromGoogleDrive.svg",{"title":1102,"description":1640},"ypdVKOaoPl-mnnRn_fSfLLvbsC6B8mNJbXvoqzXf-Dw",{"id":31911,"title":1106,"body":31912,"date":1651,"description":1640,"extension":1653,"meta":31956,"navigation":1657,"order":1651,"path":1107,"seo":31960,"stem":1108,"__hash__":31961},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fread-local-file.md",{"type":1555,"value":31913,"toc":31950},[31914,31918,31920,31923,31925,31933,31935,31937,31940,31944,31947],[1562,31915,31917],{"id":31916},"read-local-file","Read local file",[1567,31919],{},[1570,31921,31922],{},"The \"Read local file\" step can be used to read files from your local computer.",[1570,31924,31858],{},[1577,31926,31927,31929,31931],{},[1580,31928,31863],{},[1580,31930,31866],{},[1580,31932,31869],{},[1562,31934,28110],{"id":28109},[1567,31936],{},[1570,31938,31939],{},"Learn how to configure the \"Read local file\" step.",[1611,31941,31943],{"id":31942},"file-path","File path",[1570,31945,31946],{},"The path to the local file on your computer, this should be the full file path to the file.",[2227,31948],{"src":31949},"\u002Fdocs\u002Freference\u002Fsteps\u002Fstep-read-local-file.png",{"title":1640,"searchDepth":1641,"depth":1641,"links":31951},[31952,31953],{"id":31916,"depth":1644,"text":31917},{"id":28109,"depth":1644,"text":28110,"children":31954},[31955],{"id":31942,"depth":1641,"text":31943},{"category":29038,"videoguide":1651,"imagestep":31957,"summary":31958,"icon":31959},"\u002Fstep-images\u002Fread-local-file.png","Learn how to use the Read local file step","WidgetDriverClipboardContents.svg",{"title":1106,"description":1640},"MAeU9tBA-dM6sgMXVn9KUGLtuFFf3M8iJPUpom1Dtzo",{"id":31963,"title":1110,"body":31964,"date":1651,"description":32113,"extension":1653,"meta":32114,"navigation":1657,"order":1651,"path":1111,"seo":32117,"stem":1112,"__hash__":32118},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Freceive-data-from-another-app.md",{"type":1555,"value":31965,"toc":32104},[31966,31969,31974,31976,31978,31999,32001,32011,32016,32018,32020,32023,32027,32029,32032,32036,32038,32044,32050,32053,32055,32062,32068,32074,32078,32080],[1558,31967],{"video":31968},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ7O7QzaDS3I?rel=0&start=340&end=1050?rel=0",[1570,31970,31971],{},[2441,31972,31973],{},"Please note: there may be design changes between the video and current design.",[1562,31975,31454],{"id":31453},[1567,31977],{},[1570,31979,6680,31980,31982,31983,31985,31986,31989,31990,3634,31993,3634,31995,31998],{},[1681,31981,8557],{}," step allows you to receive data sent through our ",[1596,31984,161],{"href":162},", an ",[1596,31987,22655],{"href":31988},"i\u002Fdocs\u002Fno-code-tool\u002Fintegrations",", or a third-party service such as ",[1596,31991,31992],{"href":162},"Postman",[1596,31994,20274],{"href":20532},[1596,31996,31997],{"href":11388},"Google Apps Script"," and much more. This can trigger automations and allows data from your request to be used within your automation.",[1570,32000,1575],{},[1577,32002,32003,32008],{},[1580,32004,32005,32007],{},[1596,32006,13775],{"href":8319}," an automation via an API.",[1580,32009,32010],{},"Pass data to automations via a POST request.",[1570,32012,32013,32014,4959],{},"This feature is limited to certain subscription levels, see ",[1596,32015,1535],{"href":1534},[1562,32017,28110],{"id":28109},[1567,32019],{},[1570,32021,32022],{},"The options below allow you to configure this step to your workflows specific needs.",[1611,32024,32026],{"id":32025},"api-credentials","API credentials",[1567,32028],{},[1570,32030,32031],{},"Click on an item to copy it to your clipboard. This provides essential information for your API requests.",[1611,32033,32035],{"id":32034},"json-payload-example","JSON payload example",[1567,32037],{},[1570,32039,32040,32041,9315],{},"An example payload that the automation is expecting when triggered from an external service. To perform a POST request, you'll need information from the ",[1596,32042,32026],{"href":32043},"#api-credentials",[1570,32045,32046,32047,32049],{},"See our ",[1596,32048,161],{"href":162}," documentation for more details on triggering your automation via webhook\u002FAPI.",[1611,32051,25750],{"id":32052},"test-data",[1567,32054],{},[1570,32056,32057,32058,32061],{},"To test your automation manually, or before your external trigger has been set up, use the ",[1681,32059,32060],{},"test data"," option. Once enabled, this can be used to add mock data to your automation.",[2353,32063,32066],{"className":32064,"code":32065,"language":17969},[17967],"[[\"A1\", \"B1\", \"C1\"], [\"A2\", \"B2\", \"C2\"]]\n",[1740,32067,32065],{"__ignoreMap":1640},[1570,32069,32070,32071,32073],{},"When you click ",[1681,32072,2418],{}," on your automation, this data will be used in place of data received via the API.",[1611,32075,32077],{"id":32076},"further-reading","Further reading",[1567,32079],{},[1577,32081,32082,32087],{},[1580,32083,32084,32085,1696],{},"Documentation: ",[1596,32086,161],{"href":162},[1580,32088,32089,32090,3634,32092,3634,32094,3634,32097,32099,32100],{},"Guides: ",[1596,32091,31992],{"href":162},[1596,32093,31997],{"href":11388},[1596,32095,783],{"href":32096},"\u002Fguides\u002Fzapier-scraper",[1596,32098,20274],{"href":20532}," - ",[1596,32101,32103],{"href":32102},"\u002Fguides?category=APIs+%26+Webhooks","all guides",{"title":1640,"searchDepth":1641,"depth":1641,"links":32105},[32106,32107],{"id":31453,"depth":1644,"text":31454},{"id":28109,"depth":1644,"text":28110,"children":32108},[32109,32110,32111,32112],{"id":32025,"depth":1641,"text":32026},{"id":32034,"depth":1641,"text":32035},{"id":32052,"depth":1641,"text":25750},{"id":32076,"depth":1641,"text":32077},"Use the 'receive data from another app' step to trigger your automation via our API and webhooks, an integration or a third-party service such as Postman, Power Automate, Google Apps Scripts and much more.",{"category":32115,"icon":32116},"Webhook & API","WidgetWebhookReceive.svg",{"title":1110,"description":32113},"3ijYbFmO8BCvjkFU1yDnkgsaXz59Ju9pCakZ5K4tsxQ",{"id":32120,"title":1114,"body":32121,"date":1651,"description":32192,"extension":1653,"meta":32193,"navigation":1657,"order":1651,"path":1115,"seo":32195,"stem":1116,"__hash__":32196},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-duplicates.md",{"type":1555,"value":32122,"toc":32184},[32123,32126,32130,32132,32135,32137,32158,32162,32164,32166,32169,32173,32176,32179,32181],[1558,32124],{"video":32125},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=366&end=395?rel=0",[1562,32127,32129],{"id":32128},"what-to-use-the-remove-duplicates-step-for","What to use the Remove duplicates step for",[1567,32131],{},[1570,32133,32134],{},"Use this step to remove duplicates from the specified data. This can be limited to particular columns. This step can be used when importing data from Google Sheets or CSV files as well as scraping data.",[1570,32136,1575],{},[1577,32138,32139,32146,32153],{},[1580,32140,32141,32142,32145],{},"Filter ",[1596,32143,32144],{"href":16553},"scraped data"," for duplicates",[1580,32147,32148,32149,32152],{},"Clean up data stored in ",[1596,32150,21695],{"href":32151},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fimport-csv-file.html"," files",[1580,32154,32155,32156],{},"Remove duplicates from ",[1596,32157,5528],{"href":1091},[1562,32159,32161],{"id":32160},"how-to-configure-the-remove-duplicates-step","How to configure the Remove Duplicates step",[1567,32163],{},[1611,32165,2109],{"id":3468},[1570,32167,32168],{},"Select the data to deduplicate.",[1611,32170,32172],{"id":32171},"columns-to-check","Columns to check",[1570,32174,32175],{},"Specify a list of column numbers, each separated with a comma. Only these columns will be checked for duplicates.",[1570,32177,32178],{},"For example, entering 'A,B' here will check for duplicates in columns A and B only.",[1611,32180,27875],{"id":27874},[1570,32182,32183],{},"The step outputs a preview of the deduplicated data.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32185},[32186,32187],{"id":32128,"depth":1644,"text":32129},{"id":32160,"depth":1644,"text":32161,"children":32188},[32189,32190,32191],{"id":3468,"depth":1641,"text":2109},{"id":32171,"depth":1641,"text":32172},{"id":27874,"depth":1641,"text":27875},"Check and remove duplicate data from sources such as Google Sheets or CSV files. Use to clean and prepare data before use.",{"category":27892,"icon":32194},"WidgetFilterRemoveDuplicates.svg",{"title":1114,"description":32192},"Qmkmw5J1rhB6DQYkfMtVlsWZkMfNls0mrwamOv-pbuU",{"id":32198,"title":1118,"body":32199,"date":1651,"description":32244,"extension":1653,"meta":32245,"navigation":1657,"order":1651,"path":1119,"seo":32247,"stem":1120,"__hash__":32248},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-html-code.md",{"type":1555,"value":32200,"toc":32238},[32201,32204,32208,32210,32217,32219,32227,32231,32233,32235],[1558,32202],{"video":32203},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=395&end=427?rel=0",[1562,32205,32207],{"id":32206},"what-to-use-the-remove-html-code-step-for","What to use the Remove HTML code step for",[1567,32209],{},[1570,32211,32212,32213,32216],{},"Use this step to strip all the HTML from a set of data. Useful when ",[1596,32214,32215],{"href":1040},"'Scraping HTML'"," and wish to extract data from the HTML.",[1570,32218,1575],{},[1577,32220,32221,32224],{},[1580,32222,32223],{},"Remove HTML from scraped content",[1580,32225,32226],{},"Strip HTML from Google Sheet data",[1562,32228,32230],{"id":32229},"how-to-configure-the-sremove-html-code-step","How to configure the SRemove HTML code step",[1567,32232],{},[1611,32234,2109],{"id":3468},[1570,32236,32237],{},"Click 'Insert Data' to select the data you wish to remove HTML from.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32239},[32240,32241],{"id":32206,"depth":1644,"text":32207},{"id":32229,"depth":1644,"text":32230,"children":32242},[32243],{"id":3468,"depth":1641,"text":2109},"Strip HTML from a data source, including data returned by Get data steps. Use to clean text before using it in your automation.",{"category":27892,"icon":32246},"WidgetFilterStripHtml.svg",{"title":1118,"description":32244},"DtthjrUECeEjUs1ayTJqiAB0Sb9VF0i-9ejhEdlMCDw",{"id":32250,"title":1122,"body":32251,"date":1651,"description":32336,"extension":1653,"meta":32337,"navigation":1657,"order":1651,"path":1123,"seo":32339,"stem":1124,"__hash__":32340},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-results-that-contain-certain-words.md",{"type":1555,"value":32252,"toc":32325},[32253,32256,32260,32262,32268,32270,32281,32285,32287,32289,32292,32295,32298,32301,32304,32307,32310,32312,32315,32318,32321,32323],[1558,32254],{"video":32255},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2195&end=2255?rel=0",[1562,32257,32259],{"id":32258},"what-to-use-the-remove-results-that-contain-certain-words-step-for","What to use the Remove results that contain certain words step for",[1567,32261],{},[1570,32263,32264,32265],{},"Use this step to filter out rows from your data that contain particular words. Helpful if you wish to filter scraped data or import data from a ",[1596,32266,32267],{"href":1091},"Google sheet.",[1570,32269,1575],{},[1577,32271,32272,32275],{},[1580,32273,32274],{},"Remove rows from a Google Sheet",[1580,32276,32277,32278,32280],{},"Clean data from a ",[1596,32279,21695],{"href":1056},"- Filter scraped data",[1562,32282,32284],{"id":32283},"how-to-configure-the-remove-results-that-contain-certain-words-step","How to configure the Remove results that contain certain words step",[1567,32286],{},[1611,32288,2109],{"id":3468},[1570,32290,32291],{},"Select the data you wish to remove rows from.",[1611,32293,17849],{"id":32294},"words-comma-separated",[1570,32296,32297],{},"Enter either a list of any number of words to check for, separated by commas, or data containing a list of words, one in each row.",[1570,32299,32300],{},"Any row that does not contain the given word will be removed.",[1611,32302,17554],{"id":32303},"word-matching-mode",[1570,32305,32306],{},"Select Any or All words.",[1611,32308,17562],{"id":32309},"match-on-word-boundary",[1570,32311,28440],{},[1611,32313,17568],{"id":32314},"columns-optional",[1570,32316,32317],{},"Specify a list of column numbers, each separated with a comma. Only rows that have matches within these columns will be removed.",[1570,32319,32320],{},"For example, entering '1,2' here will check in columns 1 and 2 only.",[1611,32322,27875],{"id":27874},[1570,32324,31227],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":32326},[32327,32328],{"id":32258,"depth":1644,"text":32259},{"id":32283,"depth":1644,"text":32284,"children":32329},[32330,32331,32332,32333,32334,32335],{"id":3468,"depth":1641,"text":2109},{"id":32294,"depth":1641,"text":17849},{"id":32303,"depth":1641,"text":17554},{"id":32309,"depth":1641,"text":17562},{"id":32314,"depth":1641,"text":17568},{"id":27874,"depth":1641,"text":27875},"Filter data by words they contain. Works with multiple sources including Google Sheets and Get data steps.",{"category":27892,"icon":32338},"WidgetFilterRemoveWord.svg",{"title":1122,"description":32336},"rp6-adS_ca1ORlDe1VThQ50LE_5qSFtbnsn2pu-Qrxo",{"id":32342,"title":1126,"body":32343,"date":1651,"description":32416,"extension":1653,"meta":32417,"navigation":1657,"order":1651,"path":1127,"seo":32419,"stem":1128,"__hash__":32420},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fremove-results-which-do-not-contain-certain-words.md",{"type":1555,"value":32344,"toc":32405},[32345,32348,32352,32354,32359,32361,32371,32375,32377,32379,32381,32383,32385,32387,32389,32391,32393,32395,32397,32399,32401,32403],[1558,32346],{"video":32347},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2255&end=2315?rel=0",[1562,32349,32351],{"id":32350},"what-to-use-the-remove-results-which-do-not-contain-certain-words-step-for","What to use the Remove results which do not contain certain words step for",[1567,32353],{},[1570,32355,32356,32357],{},"Use this step to filter out rows from your data that do not contain particular words. Helpful if you wish to filter scraped data or import data from a ",[1596,32358,32267],{"href":1091},[1570,32360,1575],{},[1577,32362,32363,32365,32368],{},[1580,32364,32274],{},[1580,32366,32367],{},"Clean data from a CSV",[1580,32369,32370],{},"Filter scraped data",[1562,32372,32374],{"id":32373},"how-to-configure-the-remove-results-which-do-not-contain-certain-words-step","How to configure the Remove results which do not contain certain words step",[1567,32376],{},[1611,32378,2109],{"id":3468},[1570,32380,32291],{},[1611,32382,17849],{"id":32294},[1570,32384,32297],{},[1570,32386,32300],{},[1611,32388,17554],{"id":32303},[1570,32390,32306],{},[1611,32392,17562],{"id":32309},[1570,32394,28440],{},[1611,32396,17568],{"id":32314},[1570,32398,32317],{},[1570,32400,32320],{},[1611,32402,27875],{"id":27874},[1570,32404,31227],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":32406},[32407,32408],{"id":32350,"depth":1644,"text":32351},{"id":32373,"depth":1644,"text":32374,"children":32409},[32410,32411,32412,32413,32414,32415],{"id":3468,"depth":1641,"text":2109},{"id":32294,"depth":1641,"text":17849},{"id":32303,"depth":1641,"text":17554},{"id":32309,"depth":1641,"text":17562},{"id":32314,"depth":1641,"text":17568},{"id":27874,"depth":1641,"text":27875},"Filter data by words they do not contain. Works with multiple sources including Google Sheets and Get data steps.",{"category":27892,"icon":32418},"WidgetFilterWord.svg",{"title":1126,"description":32416},"RLCs_KTRIQ6C3rv29rJ69OYh71F4iO6bXjCmfabv4rs",{"id":32422,"title":1130,"body":32423,"date":1651,"description":32496,"extension":1653,"meta":32497,"navigation":1657,"order":1651,"path":1131,"seo":32499,"stem":1132,"__hash__":32500},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Freplace-text-step.md",{"type":1555,"value":32424,"toc":32487},[32425,32428,32432,32434,32437,32440,32442,32455,32459,32461,32465,32468,32472,32475,32479,32482,32484],[1558,32426],{"video":32427},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=427&end=484?rel=0",[1562,32429,32431],{"id":32430},"what-to-use-the-replace-text-step-for","What to use the Replace text step for",[1567,32433],{},[1570,32435,32436],{},"Use this step to replace a text in your data. For example, when generating reports, let's say you have scraped data that reads 'Red Shoes' and the value 40. You could change the text to 'Stock level of Red Shoes is.'",[1570,32438,32439],{},"Here's a helpful tip, if you just want to remove text, simply leave the 'Replace field' blank.",[1570,32441,1575],{},[1577,32443,32444,32450],{},[1580,32445,32446,32447,32449],{},"Overwrite ",[1596,32448,32144],{"href":1040},"- Manipulate data from a Google Sheet",[1580,32451,32452,32453],{},"Change data in a ",[1596,32454,21695],{"href":1056},[1562,32456,32458],{"id":32457},"how-to-configure-the-replace-text-step","How to configure the Replace text step",[1567,32460],{},[1611,32462,32464],{"id":32463},"data-to-replace-words","Data to replace words",[1570,32466,32467],{},"Select the data you want to replace the text. It can be from any step in Axiom. For example, you can pass the output from 'Read from a Google Sheet' or 'Webhook' as a variable into this step.",[1611,32469,32471],{"id":32470},"text-to-replace","Text to replace",[1570,32473,32474],{},"Enter the text you wish to change. It has to be found in the variable passed via 'Data to replace words'.",[1611,32476,32478],{"id":32477},"replace-with","Replace with",[1570,32480,32481],{},"Enter what you want to replace the text with",[1611,32483,27875],{"id":27874},[1570,32485,32486],{},"No action required it is a preivew of the data output by this step. So you will see your change here.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32488},[32489,32490],{"id":32430,"depth":1644,"text":32431},{"id":32457,"depth":1644,"text":32458,"children":32491},[32492,32493,32494,32495],{"id":32463,"depth":1641,"text":32464},{"id":32470,"depth":1641,"text":32471},{"id":32477,"depth":1641,"text":32478},{"id":27874,"depth":1641,"text":27875},"Replace text from any of your data sources by inserting their token in this step. Leave blank to delete, or add text to replace with.",{"category":27892,"icon":32498},"WidgetFilterReplace.svg",{"title":1130,"description":32496},"zU9i5WhSk8ibcs7hSN9wqW0DxA5N8NlMbqub6HyxLXE",{"id":32502,"title":317,"body":32503,"date":1651,"description":32533,"extension":1653,"meta":32534,"navigation":1657,"order":1651,"path":1134,"seo":32536,"stem":1135,"__hash__":32537},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frestart-browser.md",{"type":1555,"value":32504,"toc":32529},[32505,32509,32511,32514,32517,32520,32524,32526],[1562,32506,32508],{"id":32507},"what-to-use-the-restart-browser-step-for","What to use the Restart browser step for",[1567,32510],{},[1570,32512,32513],{},"Use this step to restart your browser on long or resource heavy automations to prevent the browser from running into memory issues. This behaves similar to pressing F5 to refresh the page during your run.",[1570,32515,32516],{},"We recommend only using this if you are encountering memory issues within the browser as improper use can lead to your automation taking longer, or causing additional errors in your run.",[1570,32518,32519],{},"There may be instances where page state, such as the page you are currently viewing in a list, may be stored in JavaScript - in these instances, this state will not be maintained. Page start stored as a URL component will be maintained, for example: \"example.com\u002Flist?page=2\".",[1562,32521,32523],{"id":32522},"how-to-configure-this-step","How to configure this step",[1567,32525],{},[1570,32527,32528],{},"This step does not have any configuration options.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32530},[32531,32532],{"id":32507,"depth":1644,"text":32508},{"id":32522,"depth":1644,"text":32523},"Learn how to use the Restart browser step in your Axiom",{"category":28162,"icon":32535},"WidgetRestartBrowser.svg",{"title":317,"description":32533},"GX83mlnB5FFXbNVSl8WEJa1GIZA0pz1ZqH2UuShrTgY",{"id":32539,"title":1137,"body":32540,"date":1651,"description":32588,"extension":1653,"meta":32589,"navigation":1657,"order":1651,"path":1138,"seo":32591,"stem":1139,"__hash__":32592},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frollover-element.md",{"type":1555,"value":32541,"toc":32582},[32542,32545,32549,32551,32558,32560,32571,32575,32577,32579],[1558,32543],{"video":32544},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FQ7O7QzaDS3I?start=1011&rel=0",[1562,32546,32548],{"id":32547},"what-to-use-the-rollover-element-step-for","What to use the Rollover element step for",[1567,32550],{},[1570,32552,32553,32554,32557],{},"Use this step to instruct your bot to hover or rollover an HTML element, for example, on a drop-down menu. This step is helpful for web automation when trying to automate data entry or reveal hidden content to scrape into a Google Sheet. The ",[1596,32555,32556],{"href":1162},"'Select list'"," step can also be useful for automating drop-downs.",[1570,32559,1575],{},[1577,32561,32562,32565,32568],{},[1580,32563,32564],{},"To reveal hidden content when scraping data",[1580,32566,32567],{},"When you need to automate a dropdown menu",[1580,32569,32570],{},"Trigger a hover event",[1562,32572,32574],{"id":32573},"how-to-configure-the-rollover-element-step","How to configure the Rollover Element step",[1567,32576],{},[1611,32578,1803],{"id":28115},[1570,32580,32581],{},"Click 'Select' to choose the item you want to hover over.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32583},[32584,32585],{"id":32547,"depth":1644,"text":32548},{"id":32573,"depth":1644,"text":32574,"children":32586},[32587],{"id":28115,"depth":1641,"text":1803},"Replicate hovering over HTML elements. Use when you need to reveal hidden data before scraping.",{"category":28162,"icon":32590},"WidgetHoverEvent.svg",{"title":1137,"description":32588},"Hgva7w2upOtZiRcLqLY3oUNzhL1XU9zdw7cQFZtCZV0",{"id":32594,"title":1141,"body":32595,"date":1651,"description":32637,"extension":1653,"meta":32638,"navigation":1657,"order":1651,"path":1142,"seo":32640,"stem":1143,"__hash__":32641},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Frun-another-axiom.md",{"type":1555,"value":32596,"toc":32631},[32597,32600,32604,32606,32612,32620,32622,32624,32628],[1558,32598],{"video":32599},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=504&end=524?rel=0",[1562,32601,32603],{"id":32602},"what-to-use-the-run-another-axiom-step-for","What to use the Run another Axiom step for",[1567,32605],{},[1570,32607,32608,32609,27815],{},"This step loads one Axiom into another. You can use this step to create a 'Controller' Axiom that can run multiple sub Axioms. This is a great design pattern if you find yourself creating Axioms with more than 20 steps. However, it's important to note that embedded Axioms cannot share data directly only indirectly through a step like a ",[1596,32610,32611],{"href":1091},"Read data from a Google Sheet.",[1577,32613,32614,32617],{},[1580,32615,32616],{},"Combine Axioms inside a 'Controller' Axiom",[1580,32618,32619],{},"Breakdown long Axioms into smaller Axioms",[1562,32621,28110],{"id":28109},[1567,32623],{},[1611,32625,32627],{"id":32626},"selected-axiom","Selected Axiom",[1570,32629,32630],{},"Select the Axiom to run from the drop-down list.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32632},[32633,32634],{"id":32602,"depth":1644,"text":32603},{"id":28109,"depth":1644,"text":28110,"children":32635},[32636],{"id":32626,"depth":1641,"text":32627},"Run other Axioms from inside a single Axiom with this step. Use to chain automations or reuse existing bots.",{"category":28482,"icon":32639},"WidgetRunAxiom.svg",{"title":1141,"description":32637},"AEYqgCP_1XTTpLkgkd8j336mdrgYKOi-DPYeZG6Pg1o",{"id":32643,"title":1145,"body":32644,"date":1651,"description":32699,"extension":1653,"meta":32700,"navigation":1657,"order":1651,"path":1146,"seo":32702,"stem":1147,"__hash__":32703},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-page-as-html.md",{"type":1555,"value":32645,"toc":32691},[32646,32649,32653,32655,32658,32660,32668,32672,32674,32676,32679,32681,32686,32688],[1558,32647],{"video":32648},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=524&end=524?rel=0",[1562,32650,32652],{"id":32651},"what-to-use-the-save-page-html-step-for","What to use the Save page HTML step for",[1567,32654],{},[1570,32656,32657],{},"Use this step to Download the HTML of the current page the bot has open. This can be useful for automated testing of user interfaces.",[1570,32659,1575],{},[1577,32661,32662,32665],{},[1580,32663,32664],{},"Testing web pages",[1580,32666,32667],{},"Save HTML of web page to desktop",[1562,32669,32671],{"id":32670},"how-to-configure-the-save-page-html-step","How to configure the Save page HTML step",[1567,32673],{},[1611,32675,3268],{"id":29236},[1570,32677,32678],{},"Set a folder to save to (please note currently only one new folder can be created at a time)",[1611,32680,3274],{"id":29539},[1570,32682,32683,32684,1696],{},"Enter a name to save the HTML page as. If a file with this name already exists it will be appended with a number e.g. 'page' would become 'page1.html', 'page2.html' and so on unless the overwrite existing file option is used. Only use 'Insert data' if you wish to pass a file name from another step like ",[1596,32685,16918],{"href":1091},[1611,32687,3286],{"id":29980},[1570,32689,32690],{},"Toggle to overwrite existing file.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32692},[32693,32694],{"id":32651,"depth":1644,"text":32652},{"id":32670,"depth":1644,"text":32671,"children":32695},[32696,32697,32698],{"id":29236,"depth":1641,"text":3268},{"id":29539,"depth":1641,"text":3274},{"id":29980,"depth":1641,"text":3286},"Save snapshots of a page’s HTML to your Google Drive. Use to archive content or review page structure later.",{"category":29038,"icon":32701},"WidgetDriverSaveHTML.svg",{"title":1145,"description":32699},"PvTFxBiK0-OPoj_tsfR7kLhSJHQn8b59-sLMBxkxPos",{"id":32705,"title":1149,"body":32706,"date":1651,"description":32766,"extension":1653,"meta":32767,"navigation":1657,"order":1651,"path":1150,"seo":32769,"stem":1151,"__hash__":32770},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-screenshot-locally.md",{"type":1555,"value":32707,"toc":32758},[32708,32711,32715,32717,32723,32737,32741,32743,32745,32747,32749,32752,32755],[1558,32709],{"video":32710},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=978&end=1042?rel=0",[1562,32712,32714],{"id":32713},"what-to-use-the-save-screenshot-locally-step-for","What to use the Save screenshot locally step for",[1567,32716],{},[1570,32718,32719,32720,27815],{},"Use this step to save a webpage screenshot to your local machine. This is a handy step when making Axiom bots to test websites or do data entry, and you want visual confirmation of the result. If you're going to run your bot in the cloud, taking screenshots try this ",[1596,32721,32722],{"href":1154},"'step.'",[1577,32724,32725,32728,32731,32734],{},[1580,32726,32727],{},"Capture the results of UI tests",[1580,32729,32730],{},"Confirm a web form has been submitted",[1580,32732,32733],{},"Grab a screenshot of data",[1580,32735,32736],{},"Help monitor status of a web page",[1562,32738,32740],{"id":32739},"how-to-configure-the-save-screenshot-locally-step","How to configure the Save screenshot locally step",[1567,32742],{},[1611,32744,3268],{"id":29236},[1570,32746,32678],{},[1611,32748,3274],{"id":29539},[1570,32750,32751],{},"Enter a name to save the screenshot as. If a file with this name already exists it will be appended with a number e.g. 'screenshot' would become 'screenshot1.jpeg', 'screenshot2.jpeg' and so on unless the overwrite existing file option is used.",[1611,32753,3280],{"id":32754},"file-type",[1570,32756,32757],{},"File type to save the screenshot as a JPEG or PNG.",{"title":1640,"searchDepth":1641,"depth":1641,"links":32759},[32760,32761],{"id":32713,"depth":1644,"text":32714},{"id":32739,"depth":1644,"text":32740,"children":32762},[32763,32764,32765],{"id":29236,"depth":1641,"text":3268},{"id":29539,"depth":1641,"text":3274},{"id":32754,"depth":1641,"text":3280},"Save screenshots to your local Drive. Use to archive content or review page structure later.",{"category":29038,"icon":32768},"WidgetDriverSaveScreenshot.svg",{"title":1149,"description":32766},"WE5OAXF69aNG4nAtHAjvys_d26Nv_fGtpKgEZ4cjjto",{"id":32772,"title":1153,"body":32773,"date":1651,"description":32832,"extension":1653,"meta":32833,"navigation":1657,"order":1651,"path":1154,"seo":32835,"stem":1155,"__hash__":32836},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsave-screenshot-to-google-drive.md",{"type":1555,"value":32774,"toc":32824},[32775,32778,32782,32784,32789,32802,32806,32808,32810,32813,32815,32820,32822],[1558,32776],{"video":32777},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1042&end=1096?rel=0",[1562,32779,32781],{"id":32780},"what-to-use-the-save-screenshot-to-google-drive-step-for","What to use the Save screenshot to Google Drive step for",[1567,32783],{},[1570,32785,32786,32787,27815],{},"Use this step to save a screenshot of a webpage to a Google Drive folder. This is a handy step when making Axiom bots to test websites or for data entry, and you want visual confirmation of the result. If you're going to run your bot on the desktop, try this ",[1596,32788,27832],{"href":1150},[1577,32790,32791,32793,32795,32797,32799],{},[1580,32792,32727],{},[1580,32794,32730],{},[1580,32796,32733],{},[1580,32798,32736],{},[1580,32800,32801],{},"Test checkout pages",[1562,32803,32805],{"id":32804},"how-to-configure-the-save-screenshot-to-google-drive-step","How to configure the Save screenshot to Google Drive step",[1567,32807],{},[1611,32809,29533],{"id":29532},[1570,32811,32812],{},"Enter the URL of the folder in Google Drive to save the screenshot to.",[1611,32814,3274],{"id":29539},[1570,32816,32817,32818,1696],{},"Enter a name to save the screenshot as. Leave blank to use the default Google Drive filename. Only use 'Insert data' if you wish to pass a file name from another step like ",[1596,32819,16918],{"href":1091},[1611,32821,3280],{"id":32754},[1570,32823,32757],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":32825},[32826,32827],{"id":32780,"depth":1644,"text":32781},{"id":32804,"depth":1644,"text":32805,"children":32828},[32829,32830,32831],{"id":29532,"depth":1641,"text":29533},{"id":29539,"depth":1641,"text":3274},{"id":32754,"depth":1641,"text":3280},"Save screenshots to your gogole Drive. Use to archive content or review page structure later.",{"category":29038,"icon":32834},"WidgetDriverSaveScreenshotToGoogleDrive.svg",{"title":1153,"description":32832},"lCm2dvSrpxdT1DglUwfPolose5GxsLDc-ekaWdHHY1g",{"id":32838,"title":1157,"body":32839,"date":1651,"description":1640,"extension":1653,"meta":32877,"navigation":1657,"order":1651,"path":1158,"seo":32881,"stem":1159,"__hash__":32882},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fscrape-metadata.md",{"type":1555,"value":32840,"toc":32871},[32841,32844,32846,32849,32852,32856,32858,32861,32865,32868],[1562,32842,325],{"id":32843},"scrape-metadata",[1567,32845],{},[1570,32847,32848],{},"The \"Scrape metadata\" step can be used to extract metadata from a website. This metadata contains information about the page and is set by the author of the page. This includes social media tags, and general tags such as the page title, description or keywords. You can then use the data, or export this to an external service such as Google Sheets or Microsoft Excel.",[2227,32850],{"src":32851},"\u002Fdocs\u002Freference\u002Fsteps\u002Fstep-scrape-metadata.png",[1562,32853,32855],{"id":32854},"step-configuration","Step configuration",[1567,32857],{},[1570,32859,32860],{},"Learn how to configure the step.",[1611,32862,32864],{"id":32863},"metadata","Metadata",[1570,32866,32867],{},"Select the options that you want to extract from the dropdown. Selected options will be highlighted. Use the \"Select all\" or \"Deselect all\" to select or deselect whole categories.",[2227,32869],{"src":32870},"\u002Fdocs\u002Freference\u002Fsteps\u002Fstep-scrape-metadata-open.png",{"title":1640,"searchDepth":1641,"depth":1641,"links":32872},[32873,32874],{"id":32843,"depth":1644,"text":325},{"id":32854,"depth":1644,"text":32855,"children":32875},[32876],{"id":32863,"depth":1641,"text":32864},{"category":321,"videoguide":1651,"imagestep":32878,"summary":32879,"icon":32880},"\u002Fstep-images\u002Fscrape-metadata.png","Learn how to use the Scrape metadata step","WidgetSmartScraper.svg",{"title":1157,"description":1640},"cf26wP43YR0a7CUmu_yOkJTt9skTEhtq0UMkHNc0HQM",{"id":32884,"title":1161,"body":32885,"date":1651,"description":32946,"extension":1653,"meta":32947,"navigation":1657,"order":1651,"path":1162,"seo":32949,"stem":1163,"__hash__":32950},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fselect-list.md",{"type":1555,"value":32886,"toc":32939},[32887,32890,32894,32896,32904,32906,32923,32927,32929,32931,32934,32936],[1558,32888],{"video":32889},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=922&end=1096?rel=0",[1562,32891,32893],{"id":32892},"what-to-use-the-select-list-step-for","What to use the Select list step for",[1567,32895],{},[1570,32897,32898,32899,2094,32901,32903],{},"This step automates the select list (or dropdown) web action. Select the dropdown you wish to automate and the value you wish to select. Use this step with other web action steps like ",[1596,32900,16980],{"href":1012},[1596,32902,17012],{"href":924}," to automate tasks like data entry.",[1570,32905,1575],{},[1577,32907,32908,32911,32914,32917,32920],{},[1580,32909,32910],{},"Automate Select lists when entering data into webforms",[1580,32912,32913],{},"Interacting with web page to change search filters",[1580,32915,32916],{},"Configuring web based software",[1580,32918,32919],{},"Data entry into a CRM",[1580,32921,32922],{},"When uploading files",[1562,32924,32926],{"id":32925},"how-to-configure-the-select-list-step","How to configure the Select list Step",[1567,32928],{},[1611,32930,1803],{"id":28115},[1570,32932,32933],{},"Click 'Select' to choose the select list, then use our 'Selector tool' to highlight the select list you wish to automate.",[1611,32935,2587],{"id":17969},[1570,32937,32938],{},"Input the option the bot should select or click 'Insert data' to pass a value from another step, such as 'Read data from a Google Sheet.'",{"title":1640,"searchDepth":1641,"depth":1641,"links":32940},[32941,32942],{"id":32892,"depth":1644,"text":32893},{"id":32925,"depth":1644,"text":32926,"children":32943},[32944,32945],{"id":28115,"depth":1641,"text":1803},{"id":17969,"depth":1641,"text":2587},"Automate interactions with select lists and dropdowns. Pass data into the step to dynamically select options.",{"category":28162,"icon":32948},"WidgetDriverSelectList.svg",{"title":1161,"description":32946},"eICiHyxLAw956s1xj-ZVXcGiL8Xet-iw0_D7TrQVF_0",{"id":32952,"title":1165,"body":32953,"date":1651,"description":33011,"extension":1653,"meta":33012,"navigation":1657,"order":1651,"path":1166,"seo":33014,"stem":1167,"__hash__":33015},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fselect-random-rows.md",{"type":1555,"value":32954,"toc":33003},[32955,32958,32962,32964,32967,32969,32980,32984,32986,32990,32993,32995,32998,33000],[1558,32956],{"video":32957},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=3222&end=3247?rel=0",[1562,32959,32961],{"id":32960},"what-to-use-the-select-random-rows-step-for","What to use the Select random rows step for",[1567,32963],{},[1570,32965,32966],{},"Select random rows from a given data set, and create a new data set containing them. This could be used to vary content used in a direct message or to enter a random number.",[1570,32968,1575],{},[1577,32970,32971,32974],{},[1580,32972,32973],{},"Enter random numbers stored in a Google Sheet randomly",[1580,32975,32976,32977,32979],{},"Enter text stored in a ",[1596,32978,30148],{"href":1091}," randomly",[1562,32981,32983],{"id":32982},"how-to-configure-the-select-random-rows-step","How to configure the Select random rows step",[1567,32985],{},[1611,32987,32989],{"id":32988},"rows","Rows",[1570,32991,32992],{},"Enter the number of rows to select from.",[1611,32994,2109],{"id":3468},[1570,32996,32997],{},"Click 'Insert Data' to select the data to get rows from.",[1611,32999,27875],{"id":27874},[1570,33001,33002],{},"A preview of random results returned by this step.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33004},[33005,33006],{"id":32960,"depth":1644,"text":32961},{"id":32982,"depth":1644,"text":32983,"children":33007},[33008,33009,33010],{"id":32988,"depth":1641,"text":32989},{"id":3468,"depth":1641,"text":2109},{"id":27874,"depth":1641,"text":27875},"Randomly select a row from a Google Sheet. Use this step to pick a single entry for actions like testing, sampling, or random output.",{"category":27892,"icon":33013},"WidgetSelectRandomRows.svg",{"title":1165,"description":33011},"dqnRUQAGr_kikJ37svVKPLCv4E4SSlimObTuWUCHmxc",{"id":33017,"title":1169,"body":33018,"date":1651,"description":33080,"extension":1653,"meta":33081,"navigation":1657,"order":1651,"path":1170,"seo":33083,"stem":1171,"__hash__":33084},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsend-an-email.md",{"type":1555,"value":33019,"toc":33072},[33020,33023,33027,33029,33032,33034,33045,33049,33051,33054,33057,33060,33063,33066,33069],[1558,33021],{"video":33022},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=870&end=922?rel=0",[1562,33024,33026],{"id":33025},"what-to-use-the-send-an-email-step-for","What to use the Send an email step for",[1567,33028],{},[1570,33030,33031],{},"Use this step to send an email to one or more email addresses. Very useful for confirming an Axiom has run or sharing data scraped from a reporting page with colleagues. Please respect this step and not use it to spam others.",[1570,33033,1575],{},[1577,33035,33036,33039,33042],{},[1580,33037,33038],{},"Send confirmations an Axiom has completed",[1580,33040,33041],{},"Email colleagues data you have scraped",[1580,33043,33044],{},"Distribute files you have downloaded",[1562,33046,33048],{"id":33047},"how-to-configure-the-send-an-email-step","How to configure the Send an email step",[1567,33050],{},[1611,33052,17655],{"id":33053},"email-addresses",[1570,33055,33056],{},"Enter a list of email addresses to send to, one email address per line.",[1570,33058,33059],{},"All emails are sent from a no-reply axiom.ai email address and you will not receive a reply to any message sent. Messages are rate limited to one per 30 seconds. Please do not use this step to send unsolicited email to third parties!",[1611,33061,17661],{"id":33062},"email-subject",[1570,33064,33065],{},"Add your email subject line in this field.",[1611,33067,17667],{"id":33068},"email-body",[1570,33070,33071],{},"Add your email body in this field. Use 'Insert Data' to pass data from any step into your email body.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33073},[33074,33075],{"id":33025,"depth":1644,"text":33026},{"id":33047,"depth":1644,"text":33048,"children":33076},[33077,33078,33079],{"id":33053,"depth":1641,"text":17655},{"id":33062,"depth":1641,"text":17661},{"id":33068,"depth":1641,"text":17667},"Send an email. Use to share scraped data, distribute downloaded files, or confirm that an Axiom has completed.",{"category":8031,"icon":33082},"WidgetSendEmail.svg",{"title":1169,"description":33080},"3P5hDD6n6fyu3bWdDzpvafKa8od9d5jfEXqYFwQ5jQs",{"id":33086,"title":1173,"body":33087,"date":1651,"description":33149,"extension":1653,"meta":33150,"navigation":1657,"order":1651,"path":1174,"seo":33152,"stem":1175,"__hash__":33153},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsolve-captcha.md",{"type":1555,"value":33088,"toc":33142},[33089,33092,33096,33098,33111,33122,33126,33128,33132,33135,33139],[1558,33090],{"video":33091},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=842&end=870?rel=0",[1562,33093,33095],{"id":33094},"what-to-use-the-solve-captcha-step-for","What to use the Solve Captcha step for",[1567,33097],{},[1570,33099,7816,33100,33102,33103,33107,33108,27815],{},[1596,33101,735],{"href":736}," external service to solve a captcha when your web automation encounters it. You will need to sign up and get your own ",[1596,33104,1628],{"href":33105,"rel":33106},"https:\u002F\u002F2captcha.com",[3874],", you can also learn more about solving ",[1596,33109,33110],{"href":577},"Captcha in our docs.",[1577,33112,33113,33116,33119],{},[1580,33114,33115],{},"Solve reCAPTCHA V2",[1580,33117,33118],{},"Solve reCAPTCHA V3",[1580,33120,33121],{},"Solve invisible reCAPTCHA",[1562,33123,33125],{"id":33124},"how-to-configure-the-solve-captcha-step","How to configure the Solve Captcha step",[1567,33127],{},[1611,33129,33131],{"id":33130},"_2captcha-api-key","2Captcha API key",[1570,33133,33134],{},"Enter your 2Captcha API key here to use this key as the default on all steps that require a 2Captcha API key. Your API key can be found on your 2Captcha account page.",[1611,33136,33138],{"id":33137},"override-default-api-key","Override default API key",[1570,33140,33141],{},"Enter a 2Captcha API key here to be used only on this widget.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33143},[33144,33145],{"id":33094,"depth":1644,"text":33095},{"id":33124,"depth":1644,"text":33125,"children":33146},[33147,33148],{"id":33130,"depth":1641,"text":33131},{"id":33137,"depth":1641,"text":33138},"Use a third party to solve captchas encountered during your bot run.",{"category":28162,"icon":33151},"WidgetDriverSolveCaptcha.svg",{"title":1173,"description":33149},"DPevRD_UUkIPTyjP3Cp1yhOYE4OLloiOH4bLMaopUhc",{"id":33155,"title":1177,"body":33156,"date":1651,"description":33231,"extension":1653,"meta":33232,"navigation":1657,"order":1651,"path":1178,"seo":33234,"stem":1179,"__hash__":33235},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-a-name-into-columns.md",{"type":1555,"value":33157,"toc":33222},[33158,33161,33165,33167,33173,33192,33196,33198,33200,33203,33205,33208,33211,33214,33217,33219],[1558,33159],{"video":33160},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1146&end=1211?rel=0",[1562,33162,33164],{"id":33163},"what-to-use-the-split-a-name-into-columns-step-for","What to use the Split a name into columns step for",[1567,33166],{},[1570,33168,33169,33170,27815],{},"This step takes any full name and splits it into its parts - title, first name, last name, and additional name. Useful when scraping LinkedIn Sales Navigator, and you want to send personalised messages. ",[1596,33171,33172],{"href":20828},"See this LinkedIn template.",[1577,33174,33175,33178,33181,33184],{},[1580,33176,33177],{},"To extract first names to create personalised messages",[1580,33179,33180],{},"Extract names for CRM data",[1580,33182,33183],{},"Extract first and last name from LinkedIn",[1580,33185,33186,33187,4912,33189,33191],{},"Extract first names from data in a ",[1596,33188,5528],{"href":1091},[1596,33190,21695],{"href":1056},"- Extract names to personalise email campaigns",[1562,33193,33195],{"id":33194},"how-to-configure-the-split-a-name-into-columns-step","How to configure the Split a name into columns step",[1567,33197],{},[1611,33199,2109],{"id":3468},[1570,33201,33202],{},"Select the data containing the names.",[1611,33204,31213],{"id":31212},[1570,33206,33207],{},"Enter the column in the data where the names can be found. You can enter either a number (starting from 1) or a capital letter (starting from A).",[1570,33209,33210],{},"Please ensure you only enter one value as only the first column provided will be used.",[1611,33212,19147],{"id":33213},"fields",[1570,33215,33216],{},"Select the fields to split the name into.",[1611,33218,27875],{"id":27874},[1570,33220,33221],{},"The step outputs a preview of the split names.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33223},[33224,33225],{"id":33163,"depth":1644,"text":33164},{"id":33194,"depth":1644,"text":33195,"children":33226},[33227,33228,33229,33230],{"id":3468,"depth":1641,"text":2109},{"id":31212,"depth":1641,"text":31213},{"id":33213,"depth":1641,"text":19147},{"id":27874,"depth":1641,"text":27875},"Extract first names, middle names, and surnames from scraped data. Pass in a token from your selected data source to use.",{"category":27892,"icon":33233},"WidgetFilterSplitName.svg",{"title":1177,"description":33231},"ImrrkBUCsQ_btimekpZMhq9g5eo3NhA6jMw5N9p6ZHo",{"id":33237,"title":1181,"body":33238,"date":1651,"description":33302,"extension":1653,"meta":33303,"navigation":1657,"order":1651,"path":1182,"seo":33305,"stem":1183,"__hash__":33306},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-by-character.md",{"type":1555,"value":33239,"toc":33294},[33240,33243,33247,33249,33255,33257,33268,33272,33274,33277,33280,33282,33285,33289,33291],[1558,33241],{"video":33242},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=810&end=840?rel=0",[1562,33244,33246],{"id":33245},"what-to-use-the-split-by-character-step-for","What to use the Split by character step for",[1567,33248],{},[1570,33250,33251,33252,33254],{},"Use this step to extract specific data from a larger data block like HTML. For example, you may be trying to scrape an image URL, but it's not a standard link. Using the  ",[1596,33253,31628],{"href":1040},", scrape the HTML, then use this step to extract the URL. You can also extract text with this step. Finally, you may need to use multiple Split steps, one to strip the data before and one step to strip the data after.",[1570,33256,1575],{},[1577,33258,33259,33262,33265],{},[1580,33260,33261],{},"Extract links from scraped HTML",[1580,33263,33264],{},"Get Image URLs from scraped HTML",[1580,33266,33267],{},"Get specific text from scraped data",[1562,33269,33271],{"id":33270},"how-to-configure-the-split-by-character-text-step","How to configure the Split by character text step",[1567,33273],{},[1611,33275,13279],{"id":33276},"character",[1570,33278,33279],{},"Enter a character or word to split the data on.",[1611,33281,2109],{"id":3468},[1570,33283,33284],{},"Select the variable containing the data you wish to split.",[1562,33286,33288],{"id":33287},"using-multiple-split-steps","Using multiple split steps",[1567,33290],{},[1570,33292,33293],{},"If you wish to extract data that has data in front and after, you will need to use multiple Split steps. You can easily share data between these steps by clicking 'Insert Data' and selecting the correct token.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33295},[33296,33297,33301],{"id":33245,"depth":1644,"text":33246},{"id":33270,"depth":1644,"text":33271,"children":33298},[33299,33300],{"id":33276,"depth":1641,"text":13279},{"id":3468,"depth":1641,"text":2109},{"id":33287,"depth":1644,"text":33288},"Extract data from large volumes of scraped text using the Split by character step. Use multiple steps if needed to remove text before the start and after the end.",{"category":27892,"icon":33304},"WidgetSplitByCharacter.svg",{"title":1181,"description":33302},"fxp4gWPPUJcd13NR0iegAggi63aUty9EpribVPncm1A",{"id":33308,"title":1185,"body":33309,"date":1651,"description":1640,"extension":1653,"meta":33356,"navigation":1657,"order":1651,"path":1186,"seo":33359,"stem":1187,"__hash__":33360},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswap-rows-and-columns.md",{"type":1555,"value":33310,"toc":33350},[33311,33314,33318,33320,33323,33325,33337,33341,33343,33347],[1558,33312],{"video":33313},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1131&end=1146?rel=0",[1562,33315,33317],{"id":33316},"what-to-use-the-swap-rows-and-columns-step-for","What to use the Swap rows and columns step for",[1567,33319],{},[1570,33321,33322],{},"Swap (transpose) the rows and columns in your data. Rows become columns and columns become rows. This can be useful when looking to manipulate data from a Google Sheet.",[1570,33324,1575],{},[1577,33326,33327,33332],{},[1580,33328,33329,33330,32449],{},"Transpose ",[1596,33331,32144],{"href":1040},[1580,33333,33334,33335],{},"Flip data from a ",[1596,33336,21695],{"href":1056},[1562,33338,33340],{"id":33339},"how-to-configure-the-swap-rows-and-columns-step","How to configure the Swap rows and columns step",[1567,33342],{},[1611,33344,33346],{"id":33345},"transposable-data","Transposable data",[1570,33348,33349],{},"Select the step you whish to transpose data from.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33351},[33352,33353],{"id":33316,"depth":1644,"text":33317},{"id":33339,"depth":1644,"text":33340,"children":33354},[33355],{"id":33345,"depth":1641,"text":33346},{"desciption":33357,"category":27892,"icon":33358},"Transpose rows and columns of data from any source. Pass the data source token into this step to switch row and column positions.","WidgetFilterTranspose.svg",{"title":1185,"description":1640},"OCJ41mhKAnWRxMUVWGLRzyJTWANU2XTEklALRwuZIdY",{"id":33362,"title":1189,"body":33363,"date":1651,"description":33413,"extension":1653,"meta":33414,"navigation":1657,"order":1651,"path":1190,"seo":33416,"stem":1191,"__hash__":33417},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswitch-browser-tab.md",{"type":1555,"value":33364,"toc":33406},[33365,33368,33372,33374,33381,33383,33391,33395,33397,33399,33401,33403],[1558,33366],{"video":33367},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1211&end=1238?rel=0",[1562,33369,33371],{"id":33370},"what-to-use-the-switch-browser-tab-step-for","What to use the Switch browser tab step for",[1567,33373],{},[1570,33375,33376,33377,33380],{},"This step is essential when Axiom opens a new browser tab or window during operation. Since the bot operates in only one tab at a time and cannot switch tabs automatically, you must manually direct it to the new tab. Failing to do so may result in errors like 'click element not found' because the bot remains active in the original tab. For multi-tab tasks, combine this step with the ",[1596,33378,33379],{"href":936},"'Close tab'"," step for seamless automation.",[1570,33382,1575],{},[1577,33384,33385,33388],{},[1580,33386,33387],{},"Switch form one tab to a pop up that is a new tab",[1580,33389,33390],{},"Jump between new tabs opened during a bot run",[1562,33392,33394],{"id":33393},"how-to-configure-the-switch-browser-tab-step","How to configure the Switch browser tab step",[1567,33396],{},[1611,33398,28352],{"id":28351},[1570,33400,28355],{},[1562,33402,27708],{"id":27707},[1570,33404,33405],{},"Some websites add '_blank' to their links, forcing a page to open a new tab, so keep an eye out for new tabs opening when testing your bot.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33407},[33408,33409,33412],{"id":33370,"depth":1644,"text":33371},{"id":33393,"depth":1644,"text":33394,"children":33410},[33411],{"id":28351,"depth":1641,"text":28352},{"id":27707,"depth":1644,"text":27708},"Use this step to switch active browser tabs during a run. Helps control which page the automation interacts with.",{"category":27933,"icon":33415},"WidgetDriverSwitchBrowserTab.svg",{"title":1189,"description":33413},"qLfNCUz_DDX3OuUWVE16_Xkc-F818WMc2e1P5cdW1UE",{"id":33419,"title":1193,"body":33420,"date":1651,"description":33512,"extension":1653,"meta":33513,"navigation":1657,"order":1651,"path":1194,"seo":33515,"stem":1195,"__hash__":33516},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ftrigger-webhook.md",{"type":1555,"value":33421,"toc":33503},[33422,33424,33428,33430,33433,33435,33447,33451,33453,33455,33461,33464,33470,33472,33479,33482,33488,33491],[1558,33423],{"video":31968},[1562,33425,33427],{"id":33426},"what-to-use-the-trigger-webhook-step-for","What to Use the Trigger webhook step for",[1567,33429],{},[1570,33431,33432],{},"The Trigger webhook step sends a POST request containing data from your automation to an endpoint. The data is output in a 2D array.",[1570,33434,1575],{},[1577,33436,33437,33444],{},[1580,33438,33439,33440,4912,33442,1696],{},"Send data to ",[1596,33441,783],{"href":32096},[1596,33443,763],{"href":19928},[1580,33445,33446],{},"Post data to any web app or API.",[1562,33448,33450],{"id":33449},"how-to-configure-the-trigger-webhook-step","How to configure the Trigger webhook step",[1567,33452],{},[1611,33454,17959],{"id":14142},[1570,33456,33457,33458,33460],{},"Enter the payload for the request as JSON. To send data from a step, click ",[1681,33459,16948],{},", select the token of the step you wish to post data from, and the payload will be set up automatically. The data will be posted in a 2D array.",[1570,33462,33463],{},"You can also construct your own payload using JSON and a combination of the tokens available for selection. See the example below:",[2353,33465,33468],{"className":33466,"code":33467,"language":17969},[17967],"{\n  \"request\": \"[google-sheet-data?all&1]\",\n  \"customer\": {\n    \"first_name\": \"[google-sheet-data?all&2]\",\n    \"last_name\": \"[google-sheet-data?all&3]\",\n    \"email\": \"[google-sheet-data?all&4]\",\n    \"phone\": \"[google-sheet-data?all&5]\",\n    \"company\": {\n      \"name\": \"[google-sheet-data?all&6]\",\n      \"job_title\": \"[google-sheet-data?all&7]\",\n      \"industry\": \"[google-sheet-data?all&8]\"\n    },\n  }\n}\n",[1740,33469,33467],{"__ignoreMap":1640},[1611,33471,2212],{"id":8624},[1570,33473,33474,33475,33478],{},"Insert the URL of the ",[1681,33476,33477],{},"'Endpoint'"," you wish to post to.",[1611,33480,33481],{"id":1627},"API Key",[1570,33483,33484,33485,33487],{},"You can access your ",[1596,33486,1628],{"href":2200}," here, which is only available for Pro subscribers and higher.",[1611,33489,33490],{"id":28866},"Keen to Learn More?",[1577,33492,33493,33498],{},[1580,33494,33495,33496,1696],{},"Post data from ",[1596,33497,783],{"href":32096},[1580,33499,33500,33501,1696],{},"Read about our ",[1596,33502,161],{"href":162},{"title":1640,"searchDepth":1641,"depth":1641,"links":33504},[33505,33506],{"id":33426,"depth":1644,"text":33427},{"id":33449,"depth":1644,"text":33450,"children":33507},[33508,33509,33510,33511],{"id":14142,"depth":1641,"text":17959},{"id":8624,"depth":1641,"text":2212},{"id":1627,"depth":1641,"text":33481},{"id":28866,"depth":1641,"text":33490},"Post data to other web apps via webhook.",{"category":32115,"icon":33514},"WidgetRestApi.svg",{"title":1193,"description":33512},"zrbVbaNkgQV_SbajQdmuVUVhYH-LGinmrjL_d9M8HDY",{"id":33518,"title":1197,"body":33519,"date":1651,"description":33579,"extension":1653,"meta":33580,"navigation":1657,"order":1651,"path":1198,"seo":33582,"stem":1199,"__hash__":33583},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ftry-catch.md",{"type":1555,"value":33520,"toc":33570},[33521,33524,33528,33530,33533,33535,33537,33542,33546,33548,33552,33555,33557,33560,33562],[1558,33522],{"video":33523},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2445&end=2485?rel=0",[1562,33525,33527],{"id":33526},"what-to-use-the-try-catch-step-for","What to use the Try catch step for",[1567,33529],{},[1570,33531,33532],{},"The Try catch step executes sub-steps within the 'Try' block. If these steps trigger an error, it is intercepted by the 'Catch' block. This block not only catches the error but also returns it as a token for debugging purposes. Additionally, it can execute a separate set of sub-steps tailored for error handling.",[1562,33534,1575],{"id":30690},[1567,33536],{},[1577,33538,33539],{},[1580,33540,33541],{},"Debug Axiom runs",[1562,33543,33545],{"id":33544},"how-to-configure-the-try-catch-step","How to configure the Try catch step",[1567,33547],{},[1611,33549,33551],{"id":33550},"try","Try",[1570,33553,33554],{},"Add the sub-steps you wish to execute as part of the 'Try' condition.",[1611,33556,8096],{"id":4236},[1570,33558,33559],{},"Add the sub-steps you wish to execute as part of the 'Catch' condition.",[1611,33561,28462],{"id":28461},[1570,33563,30801,33564,33566,33567,2862],{},[1596,33565,30804],{"href":1075}," or the ",[1596,33568,33569],{"href":1048},"IF condition",{"title":1640,"searchDepth":1641,"depth":1641,"links":33571},[33572,33573,33574],{"id":33526,"depth":1644,"text":33527},{"id":30690,"depth":1644,"text":1575},{"id":33544,"depth":1644,"text":33545,"children":33575},[33576,33577,33578],{"id":33550,"depth":1641,"text":33551},{"id":4236,"depth":1641,"text":8096},{"id":28461,"depth":1641,"text":28462},"Execute a different set of steps if an error is encountered during runtime. Use to handle errors.",{"category":27727,"icon":33581},"TemplateTryCatch.svg",{"title":1197,"description":33579},"WJn35y1Q2hUbBkKsVJiEGEl3Isdu-KV1b-6_Sh5TMfk",{"id":33585,"title":1201,"body":33586,"date":1651,"description":33657,"extension":1653,"meta":33658,"navigation":1657,"order":1651,"path":1202,"seo":33660,"stem":1203,"__hash__":33661},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fupload-file.md",{"type":1555,"value":33587,"toc":33650},[33588,33591,33595,33597,33600,33603,33620,33631,33633,33635,33639,33642,33645,33647],[1558,33589],{"video":33590},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=3382&end=3486?rel=0",[1562,33592,33594],{"id":33593},"what-to-use-the-upload-a-file-step-for","What to use the Upload a file step for",[1567,33596],{},[1570,33598,33599],{},"Use the Upload File step to attach files to an email and even automate uploading images to social media. This step is a ubiquitous step designed to work with file upload fields.",[1570,33601,33602],{},"You can use this step to upload files to:",[1577,33604,33605,33608,33611,33613,33615,33617],{},[1580,33606,33607],{},"CMS pages",[1580,33609,33610],{},"Social media platforms like Twitter",[1580,33612,29399],{},[1580,33614,29402],{},[1580,33616,29405],{},[1580,33618,33619],{},"NFT websites",[1570,33621,33622,33623,33626,33627,2094,33629,29289],{},"Currently, the Upload and Download steps only work in conjunction with the Axiom Desktop Application, you can install the app by clicking ",[1596,33624,33625],{"href":29283},"here."," We also now have Google Drive steps that allow you to ",[1596,33628,25003],{"href":1206},[1596,33630,12247],{"href":996},[1562,33632,28110],{"id":28109},[1567,33634],{},[1611,33636,33638],{"id":33637},"how-to-configure-the-upload-a-file-step","How to configure the upload a file step",[1570,33640,33641],{},"First up, select the file input field you wish to upload your file to. You do this with the selector tool click 'File Input Field'. The display will transform into the selector tool. Next, click on the input you wish to upload to and confirm your choice.",[1570,33643,33644],{},"A custom selector option is available. We only recommend using this if the selector tool fails to find the element.",[1611,33646,3268],{"id":29236},[1570,33648,33649],{},"Set a folder you wish to upload from, copy and paste a path to the folder or use the 'Click to select' button to find the file.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33651},[33652,33653],{"id":33593,"depth":1644,"text":33594},{"id":28109,"depth":1644,"text":28110,"children":33654},[33655,33656],{"id":33637,"depth":1641,"text":33638},{"id":29236,"depth":1641,"text":3268},"Using the desktop app, upload files locally from the computer where the app is installed.",{"category":29038,"icon":33659},"WidgetDriverFileUpload.svg",{"title":1201,"description":33657},"c383dvxJfRTRyQnloz29PINVeym4YVACEbx30Qvw0ls",{"id":33663,"title":1205,"body":33664,"date":1651,"description":33722,"extension":1653,"meta":33723,"navigation":1657,"order":1651,"path":1206,"seo":33724,"stem":1207,"__hash__":33725},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fupload-file-google-drive.md",{"type":1555,"value":33665,"toc":33715},[33666,33669,33673,33675,33678,33680,33694,33700,33702,33704,33707,33710,33712],[1558,33667],{"video":33668},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=3312&end=3382?rel=0",[1562,33670,33672],{"id":33671},"what-to-use-the-upload-load-a-file-to-google-drive-step-for","What to use the Upload load a file to Google Drive step for",[1567,33674],{},[1570,33676,33677],{},"Use this step to directly upload files from your Google Drive into any web app. This step works in Axiom Cloud. Previously, files had to be uploaded from the desktop application.",[1570,33679,33602],{},[1577,33681,33682,33684,33686,33688,33690,33692],{},[1580,33683,33607],{},[1580,33685,33610],{},[1580,33687,29399],{},[1580,33689,29402],{},[1580,33691,29405],{},[1580,33693,33619],{},[1570,33695,29008,33696,2094,33698,29501],{},[1596,33697,25003],{"href":1202},[1596,33699,12247],{"href":988},[1562,33701,28110],{"id":28109},[1567,33703],{},[1611,33705,11527],{"id":33706},"file-input-field",[1570,33708,33709],{},"Click 'Select' to choose form element to upload the file to. Note that this is only guaranteed to work on standard HTML file upload fields - some customised file upload implementations may not function. Sorry!",[1611,33711,31883],{"id":31882},[1570,33713,33714],{},"Enter the URL of the file in Google Drive to upload.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33716},[33717,33718],{"id":33671,"depth":1644,"text":33672},{"id":28109,"depth":1644,"text":28110,"children":33719},[33720,33721],{"id":33706,"depth":1641,"text":11527},{"id":31882,"depth":1641,"text":31883},"Upload files directly to a folder in your Google Drive.",{"category":29038,"icon":31907},{"title":1205,"description":33722},"3ZThg433R04Ct4Y57ekUHSJfP5C_I_ywhfazG9zvjv4",{"id":33727,"title":1209,"body":33728,"date":1651,"description":33784,"extension":1653,"meta":33785,"navigation":1657,"order":1651,"path":1210,"seo":33787,"stem":1211,"__hash__":33788},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwait.md",{"type":1555,"value":33729,"toc":33778},[33730,33733,33737,33739,33742,33745,33747,33761,33765,33767,33771,33774],[1558,33731],{"video":33732},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=1096&end=1131?rel=0",[1562,33734,33736],{"id":33735},"what-to-use-the-wait-step-for","What to use the wait step for",[1567,33738],{},[1570,33740,33741],{},"This step allows you to add a wait to pause your bot run. You can do this to interact with the page and manually enter a password. But the most common use is to slow the bot by a fraction of a second to allow HTML elements, such as a button, to load.",[1570,33743,33744],{},"A top tip when testing your Axiom: if you notice actions out of sync or misfiring clicks, try adding a wait. It's most likely the click fired before the button loaded.",[1570,33746,1575],{},[1577,33748,33749,33752,33755,33758],{},[1580,33750,33751],{},"Pause your bot and interact with the page only on Desktop or VPS",[1580,33753,33754],{},"Wait to allow data to load",[1580,33756,33757],{},"Slow the bot to allow buttons and new elements to load",[1580,33759,33760],{},"Allow long file uploads",[1562,33762,33764],{"id":33763},"how-to-configure-the-wait-step","How to configure the Wait step",[1567,33766],{},[1611,33768,33770],{"id":33769},"set-a-time-in-milliseconds","Set a time in milliseconds",[1570,33772,33773],{},"One second it 1000 milliseconds, for waits between click elements try 500.",[1570,33775,29770,33776,1696],{},[1596,33777,29774],{"href":29773},{"title":1640,"searchDepth":1641,"depth":1641,"links":33779},[33780,33781],{"id":33735,"depth":1644,"text":33736},{"id":33763,"depth":1644,"text":33764,"children":33782},[33783],{"id":33769,"depth":1641,"text":33770},"Pause your automation to manually interact or wait for an event to conclude before continuing.",{"category":28162,"icon":33786},"WidgetDriverWait.svg",{"title":1209,"description":33784},"Yw_ZDK95QwCHesVXsBUADIkEgEn1SLjsPtbNQkvcwcc",{"id":33790,"title":1213,"body":33791,"date":1651,"description":33879,"extension":1653,"meta":33880,"navigation":1657,"order":1651,"path":1214,"seo":33882,"stem":1215,"__hash__":33883},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-a-google-sheet-step.md",{"type":1555,"value":33792,"toc":33868},[33793,33796,33798,33800,33809,33811,33822,33828,33832,33834,33836,33838,33840,33842,33844,33847,33851,33854,33858,33861,33865],[1558,33794],{"video":33795},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=2315&end=2380?rel=0",[1562,33797,28907],{"id":28906},[1567,33799],{},[1570,33801,33802,33803,2094,33805,33808],{},"Use this step to output data generated by your Axioms into a Google Sheet. You will also find steps to ",[1596,33804,29015],{"href":1091},[1596,33806,33807],{"href":976},"delete"," data from Google Sheets.",[1570,33810,1575],{},[1577,33812,33813,33816,33819],{},[1580,33814,33815],{},"Write scraped data to a Google Sheet",[1580,33817,33818],{},"Transfer data stored in CSVs into a Google Sheet",[1580,33820,33821],{},"Output repporting data into",[1570,33823,33824,33825],{},"This step features in ",[1596,33826,33827],{"href":1970},"many of our bot templates.",[1562,33829,33831],{"id":33830},"how-to-configure-the-write-data-to-a-google-sheet-step","How to configure the Write data to a Google Sheet step",[1567,33833],{},[1611,33835,1749],{"id":28017},[1570,33837,29085],{},[1611,33839,1755],{"id":28023},[1570,33841,29102],{},[1611,33843,2109],{"id":3468},[1570,33845,33846],{},"Select the data you wish to write to the Google Sheet",[1611,33848,33850],{"id":33849},"write-options-clear-data-before-writing-add-to-existing-data","Write options - Clear data before writing | Add to existing data",[1570,33852,33853],{},"Select 'Add to existing data' to write the new data to the sheet without first deleting existing data; select 'Clear data before writing' to delete all data before writing any new data.",[1611,33855,33857],{"id":33856},"starting-cell","Starting cell",[1570,33859,33860],{},"To start writing to a particular cell in a Google Sheet, enter the column and row information, for example, 'D7'. You will also need to set 'Add to existing data' for this option to work.",[1611,33862,33864],{"id":33863},"write-method","Write method",[1570,33866,33867],{},"If you want to write formulas to the Google Sheet set this option to 'User entered'.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33869},[33870,33871],{"id":28906,"depth":1644,"text":28907},{"id":33830,"depth":1644,"text":33831,"children":33872},[33873,33874,33875,33876,33877,33878],{"id":28017,"depth":1641,"text":1749},{"id":28023,"depth":1641,"text":1755},{"id":3468,"depth":1641,"text":2109},{"id":33849,"depth":1641,"text":33850},{"id":33856,"depth":1641,"text":33857},{"id":33863,"depth":1641,"text":33864},"Output data from your automation to a Google Sheet.",{"category":27792,"icon":33881},"WidgetWriteGoogleSheet.svg",{"title":1213,"description":33879},"jf5jpuFiZ9gCiBst5ltlF-EohCfLwA-sNAqYFNMC2mk",{"id":33885,"title":1217,"body":33886,"date":1651,"description":33945,"extension":1653,"meta":33946,"navigation":1657,"order":1651,"path":1218,"seo":33948,"stem":1219,"__hash__":33949},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-airtable.md",{"type":1555,"value":33887,"toc":33937},[33888,33892,33894,33897,33899,33918,33922,33924,33926,33928,33930,33932,33934],[1562,33889,33891],{"id":33890},"what-to-use-the-write-data-to-airtable-step-for","What to use the Write data to Airtable step for",[1567,33893],{},[1570,33895,33896],{},"Write data to Airtable from your Axiom steps to store, organise, and use your automation results in a structured table.",[1570,33898,1575],{},[1577,33900,33901,33908,33915],{},[1580,33902,33903,33904,33907],{},"Export ",[1596,33905,33906],{"href":1040},"scraped"," data into Airtable",[1580,33909,33910,33911,33914],{},"Send ",[1596,33912,33913],{"href":1012},"form submissions"," directly to Airtable",[1580,33916,33917],{},"Store automation results in Airtable for later use",[1562,33919,33921],{"id":33920},"how-to-configure-the-write-data-to-airtable-step","How to configure the Write data to Airtable step",[1567,33923],{},[1611,33925,18077],{"id":31748},[1570,33927,31751],{},[1611,33929,31755],{"id":31754},[1570,33931,31758],{},[1611,33933,2109],{"id":3468},[1570,33935,33936],{},"Select the data to write.",{"title":1640,"searchDepth":1641,"depth":1641,"links":33938},[33939,33940],{"id":33890,"depth":1644,"text":33891},{"id":33920,"depth":1644,"text":33921,"children":33941},[33942,33943,33944],{"id":31748,"depth":1641,"text":18077},{"id":31754,"depth":1641,"text":31755},{"id":3468,"depth":1641,"text":2109},"Export data to Airtable from your automations.",{"category":27792,"icon":33947},"WidgetWriteAirtable.svg",{"title":1217,"description":33945},"oUeRY4PKMUYQhXmFh1n52a7vYkmmISwo4Wzvxf5vc3o",{"id":33951,"title":1221,"body":33952,"date":1651,"description":1640,"extension":1653,"meta":34033,"navigation":1657,"order":1651,"path":1222,"seo":34035,"stem":1223,"__hash__":34036},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-data-to-an-excel-sheet.md",{"type":1555,"value":33953,"toc":34022},[33954,33958,33960,33963,33965,33976,33978,33980,33982,33985,33987,33990,33992,33995,33997,34003,34009,34011,34017,34019],[1562,33955,33957],{"id":33956},"what-to-use-the-write-data-to-an-excel-sheet-step-for","What to use the Write data to an Excel sheet step for",[1567,33959],{},[1570,33961,33962],{},"Use this step to output data generated by your automations into an Excel sheet.",[1570,33964,1575],{},[1577,33966,33967,33970,33973],{},[1580,33968,33969],{},"Write scraped data to an Excel sheet.",[1580,33971,33972],{},"Transfer data stored in CSVs into an Excel sheet.",[1580,33974,33975],{},"Output reporting data into an Excel sheet.",[1562,33977,32523],{"id":32522},[1567,33979],{},[1611,33981,1749],{"id":28017},[1570,33983,33984],{},"Enter a URL for the sheet that you wish to write to, or enter the name in the search box.",[1611,33986,1755],{"id":28023},[1570,33988,33989],{},"The name of the sheet within the workspace to write data to.",[1611,33991,2109],{"id":3468},[1570,33993,33994],{},"The data token that contains the data that you wish to write to the Excel sheet.",[1611,33996,16757],{"id":29648},[1570,33998,33999,34002],{},[1681,34000,34001],{},"Add to existing data:"," write data to the next available row within your sheet.",[1570,34004,34005,34008],{},[1681,34006,34007],{},"Clear data before writing:"," clear the spreadsheet, and then write the data into the newly cleared spreadsheet.",[1611,34010,33857],{"id":33856},[1570,34012,34013,34014,1696],{},"The cell that you wish to start writing on. ",[2441,34015,34016],{},"Note: failure to change this will cause the cell to be re-written during subsequent runs",[1611,34018,33864],{"id":33863},[1570,34020,34021],{},"To write formulas, set this option to \"User entered\".",{"title":1640,"searchDepth":1641,"depth":1641,"links":34023},[34024,34025],{"id":33956,"depth":1644,"text":33957},{"id":32522,"depth":1644,"text":32523,"children":34026},[34027,34028,34029,34030,34031,34032],{"id":28017,"depth":1641,"text":1749},{"id":28023,"depth":1641,"text":1755},{"id":3468,"depth":1641,"text":2109},{"id":29648,"depth":1641,"text":16757},{"id":33856,"depth":1641,"text":33857},{"id":33863,"depth":1641,"text":33864},{"descripition":34034,"category":27792,"icon":33881},"Write data from any step to a Microsoft Excel sheet using this step. Use to store, share, or process results outside the automation,",{"title":1221,"description":1640},"dCwd9qkNu8l5j9ZYe3ftyIyAPqGGPmeyMKtYQSlRuzQ",{"id":34038,"title":1225,"body":34039,"date":1651,"description":34128,"extension":1653,"meta":34129,"navigation":1657,"order":1651,"path":1226,"seo":34131,"stem":1227,"__hash__":34132},"content\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-javascript.md",{"type":1555,"value":34040,"toc":34121},[34041,34044,34048,34050,34057,34064,34066,34089,34095,34099,34101,34105,34108,34112,34115,34118],[1558,34042],{"video":34043},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FPCYHijmR0jY?rel=0&start=706&end=734?rel=0",[1562,34045,34047],{"id":34046},"what-to-use-the-write-javascript-step-for","What to use the Write javascript step for",[1567,34049],{},[1570,34051,34052,34053,1696],{},"Are you a coder? Write custom javascript for any operation inside your Axiom, from posting to an API to formatting data from steps. You can also use data from other steps as variables in your custom JS. Please note Axiom data model is a 2D array, so when returning data as a token, remember to return an array (or it will not work). You can return values as an array of arrays from this step - they will be appended to the current row. To learn more about what you can do, ",[1596,34054,34056],{"href":34055},"\u002Fdocs\u002Ftutorials\u002Fjavascript","click here",[1570,34058,34059,34060,34063],{},"Are you using this step to create a ",[1596,34061,34062],{"href":82},"required feature?"," Please do let us know we may create a new step for you.",[1570,34065,1575],{},[1577,34067,34068,34071,34074,34077,34080,34083,34086],{},[1580,34069,34070],{},"Create custom logic",[1580,34072,34073],{},"Format data from other steps",[1580,34075,34076],{},"Use Puppeteer's API",[1580,34078,34079],{},"Use the node filesystem API",[1580,34081,34082],{},"Click buttons",[1580,34084,34085],{},"Scrape content",[1580,34087,34088],{},"Run JS in the browser or the App",[1570,34090,34091,34092,1696],{},"Some useful ",[1596,34093,34094],{"href":400},"JS snippets",[1562,34096,34098],{"id":34097},"how-to-configure-the-write-javascript-step","How to configure the Write javascript step",[1567,34100],{},[1611,34102,34104],{"id":34103},"script","Script",[1570,34106,34107],{},"Write your JS into our JS editor field. If tokens are available from other steps, you will see an 'Insert Data' button. Data is only available for steps added before your Javascript step.",[1611,34109,34111],{"id":34110},"run-in-app","Run in app",[1570,34113,34114],{},"Toggle on, then Check to run the javascript in the context of the Axiom app, rather than in the browser window.",[1570,34116,34117],{},"This allows you to javascript APIs available in the axiom desktop app - such as Puppeteer, FS, and Chat GPT - which are not available in the browser.",[1570,34119,34120],{},"It is also a better method of sending API requests manually, because sending such requests from the browser often cause CORS errors.",{"title":1640,"searchDepth":1641,"depth":1641,"links":34122},[34123,34124],{"id":34046,"depth":1644,"text":34047},{"id":34097,"depth":1644,"text":34098,"children":34125},[34126,34127],{"id":34103,"depth":1641,"text":34104},{"id":34110,"depth":1641,"text":34111},"Use JavaScript and Puppeteer in your no-code automation to extend functionality. Puppeteer library is already loaded, no need to include it.",{"category":27981,"icon":34130},"WidgetDriverCode.svg",{"title":1225,"description":34128},"2qZ8gf-H-ar-NDo7N6B-Tri601VO3PmmmUcxR2pnGgk",{"id":1553,"title":309,"body":34134,"date":1651,"description":1652,"extension":1653,"meta":34193,"navigation":1657,"order":1651,"path":1059,"seo":34194,"stem":1060,"__hash__":1659},{"type":1555,"value":34135,"toc":34184},[34136,34138,34140,34142,34144,34146,34160,34164,34166,34168,34170,34172,34174,34176,34178,34180,34182],[1558,34137],{"video":1560},[1562,34139,1565],{"id":1564},[1567,34141],{},[1570,34143,1572],{},[1570,34145,1575],{},[1577,34147,34148,34150,34152,34154,34156],{},[1580,34149,1582],{},[1580,34151,1585],{},[1580,34153,1588],{},[1580,34155,1591],{},[1580,34157,1594,34158],{},[1596,34159,161],{"href":1111},[1570,34161,1600,34162],{},[1596,34163,1603],{"href":82},[1562,34165,1607],{"id":1606},[1567,34167],{},[1611,34169,1614],{"id":1613},[1570,34171,1617],{},[1611,34173,1621],{"id":1620},[1570,34175,1624],{},[1611,34177,1628],{"id":1627},[1570,34179,1631],{},[1611,34181,1635],{"id":1634},[1570,34183,1638],{},{"title":1640,"searchDepth":1641,"depth":1641,"links":34185},[34186,34187],{"id":1564,"depth":1644,"text":1565},{"id":1606,"depth":1644,"text":1607,"children":34188},[34189,34190,34191,34192],{"id":1613,"depth":1641,"text":1614},{"id":1620,"depth":1641,"text":1621},{"id":1627,"depth":1641,"text":1628},{"id":1634,"depth":1641,"text":1635},{"category":1655,"icon":1656},{"title":309,"description":1652},1781188328923]