[{"data":1,"prerenderedAt":3790},["ShallowReactive",2],{"search-dialog-corpus":3,"search-dialog-default-links":2152,"pinned-blogs":3699,"content-\u002Fpricing":3700,"content-doc-\u002Fpricing-fetch":3762},[4,10,16,21,26,31,36,41,46,51,56,62,67,72,77,82,87,92,97,102,107,112,116,120,125,129,134,139,144,147,151,156,161,166,171,174,179,184,188,193,198,203,207,211,216,220,225,229,233,238,242,247,252,257,262,267,271,275,280,285,290,295,299,304,308,313,317,322,327,332,337,342,346,350,355,359,364,368,372,377,381,386,391,396,401,405,410,414,419,424,428,431,435,440,445,450,455,460,465,470,474,479,483,488,493,498,502,506,511,516,521,526,531,536,541,546,550,555,559,564,569,574,578,582,587,592,597,602,607,611,616,620,624,629,633,637,641,645,650,655,660,665,670,675,679,684,688,693,698,702,706,711,715,720,724,728,733,737,742,747,752,756,760,765,768,773,778,783,788,792,796,801,805,810,815,820,823,827,832,837,842,847,852,857,862,867,871,875,880,885,890,895,899,903,908,913,918,922,927,932,937,942,947,952,957,962,966,971,976,981,985,990,995,1000,1005,1010,1015,1020,1024,1029,1034,1038,1042,1047,1051,1056,1061,1065,1069,1074,1079,1083,1088,1093,1097,1102,1107,1112,1117,1121,1126,1131,1136,1139,1143,1148,1152,1157,1162,1167,1170,1174,1179,1183,1188,1193,1198,1201,1205,1210,1215,1220,1225,1230,1235,1240,1245,1250,1255,1260,1265,1270,1274,1279,1284,1289,1294,1298,1303,1307,1312,1316,1320,1325,1330,1335,1340,1345,1350,1354,1359,1364,1369,1374,1378,1383,1387,1392,1397,1401,1405,1409,1414,1419,1424,1429,1434,1439,1444,1449,1452,1455,1459,1464,1468,1472,1477,1482,1486,1491,1496,1501,1506,1511,1515,1519,1524,1527,1532,1537,1542,1546,1550,1555,1559,1563,1567,1572,1575,1580,1585,1590,1595,1599,1603,1608,1611,1616,1621,1626,1630,1635,1639,1644,1649,1653,1656,1660,1665,1668,1672,1677,1681,1686,1690,1695,1700,1705,1708,1712,1717,1721,1725,1730,1734,1739,1744,1749,1752,1756,1761,1765,1770,1775,1779,1783,1788,1792,1797,1802,1806,1810,1815,1819,1824,1828,1833,1838,1843,1848,1852,1856,1861,1865,1870,1875,1880,1885,1890,1894,1898,1903,1907,1912,1917,1921,1926,1931,1936,1939,1943,1948,1952,1957,1962,1967,1971,1975,1980,1985,1989,1994,1999,2004,2007,2011,2016,2020,2025,2030,2035,2040,2044,2048,2053,2058,2061,2066,2070,2073,2078,2083,2087,2092,2097,2102,2107,2112,2116,2120,2125,2129,2134,2139,2144,2148],{"id":5,"title":6,"titles":7,"content":8,"level":9},"\u002Fguides\u002Fai-proofreading","Build an AI Proofreading Assistant for any Website",[],"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. 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.",1,{"id":11,"title":12,"titles":13,"content":14,"level":15},"\u002Fguides\u002Fai-proofreading#get-started-create-your-google-sheet","Get started: create your Google Sheet",[6],"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut \"sheet.new\" into the address bar, assuming you already have an account. Name your sheet something like \"ChatGPT AI Proofreader\" and set up a tab called \"Links\". Add another tab called \"Data\".",2,{"id":17,"title":18,"titles":19,"content":20,"level":15},"\u002Fguides\u002Fai-proofreading#install-the-ai-proofreading-template","Install the AI Proofreading template",[6],"To install this AI Proofreading template, 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":22,"title":23,"titles":24,"content":25,"level":15},"\u002Fguides\u002Fai-proofreading#configure-your-ai-proofreading-assistant-in-7-easy-steps","Configure your AI Proofreading Assistant in 7 easy steps",[6],"Please note in step 2.2, you need to select a single block of content with the selector tool. 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab called 'Amazon product links'.2.0 Loop through data2.1 Go to pageEnter URL: Click Insert Data, select google-sheet-data, and select the column with the links in.2.2 Get data from bot's current pageSelect: 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.Max Results: Set to 1.2.3 Generate text with ChatGPTChatGPT API key: Enter your API key.Prompt: Insert the text \"Check this text for spelling mistakes and grammar, return in bullet list compatible with spreadsheet cell -\" then click Insert data followed by [scrape-data] to add the scraped data to check.Extract values: Insert the values you want to extract, separated by a comma — for example: name, email, job title.2.4 Append or Merge DataData A: Insert [google-sheet-data] and select the column containing the URL.Data B: Insert [chatgpt-output].2.5 Write Data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created.DATA: Select [appended-data].Clear data before writing | Add to existing data: Set this option to \"Add to existing\".2.6 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created for links.First row: Set to 1.Last row: Set to 1.",{"id":27,"title":28,"titles":29,"content":30,"level":15},"\u002Fguides\u002Fai-proofreading#testing-and-running-your-ai-proofreader","Testing and running your AI proofreader",[6],"We suggest running a test first, stopping the bot after a few loops, and reviewing the data.",{"id":32,"title":33,"titles":34,"content":35,"level":15},"\u002Fguides\u002Fai-proofreading#customize-your-template","Customize your template",[6],"Like all Axiom templates, you can use our no-code bot builder to customize any bot according to your requirements.",{"id":37,"title":38,"titles":39,"content":40,"level":15},"\u002Fguides\u002Fai-proofreading#troubleshooting","Troubleshooting",[6],"We recommend you watch the video to troubleshoot. Want to set an amount of loops?\nIn Step 1.0, set a Last Cell — something like AE50 will scrape 50 rows.Selectors fail to find content?\nIn Step 2.2 – Get data from bot's current page, select a single block of content with the selector tool.Want to select all content on any website?\nIn the same step, use a custom selector — try body.Slow running scrape?\nIn the same step, toggle Configure scraper, then set No. of retry... to 1.ChatGPT step not working?\nIn Step 2.3 – Generate text with ChatGPT, make sure you’ve entered your ChatGPT API key.Want better results from ChatGPT?\nIn the same step, set the Prompt to something like:\"Check this text for spelling mistakes and grammar, return in bullet list compatible with spreadsheet cell - [scrape-data]\".\nTweak the wording to fine-tune results.Wrong data written to sheet?\nIn Step 2.5 – Write Data to a Google Sheet, check that Data A is [google-sheet-data] and Data B is [chatgpt-output].No data written?\nIn the same step, check that Data is set to [appended-data].Keeps overwriting data?\nMake sure Add to existing is selected in the same step. We offer excellent customer support. If you need help, get in touch. You could also read this full guide on how to do ChatGPT web scraping.",{"id":42,"title":43,"titles":44,"content":45,"level":9},"\u002Fguides\u002Fapple-shortcuts","How to use Apple Shortcuts to trigger an axiom.ai automation",[],"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. 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. 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.",{"id":47,"title":48,"titles":49,"content":50,"level":15},"\u002Fguides\u002Fapple-shortcuts#getting-started","Getting started",[43],"To get started, you will need the following from the axiom.ai Chrome extension: API key: The API key is found on the dashboard.Automation name: Get the name of the automation you wish to trigger.Endpoint: The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.",{"id":52,"title":53,"titles":54,"content":55,"level":15},"\u002Fguides\u002Fapple-shortcuts#trigger-an-axiomai-automation-with-apple-shortcuts","Trigger an axiom.ai automation with Apple Shortcuts",[43],"Open the Apple Shortcuts application on your iPhone, iPad, or Mac. Create shortcut: Tap the \"+\" icon to create a new Shortcut.Add step: Add a get contents from URL action, set the URL to the axiom.ai endpoint from above.Configure: Change the method to POST.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.",{"id":57,"title":58,"titles":59,"content":60,"level":61},"\u002Fguides\u002Fapple-shortcuts#set-up-the-apple-shortcut-to-open-the-browser","Set up the Apple Shortcut to open the browser",[43,53],"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. Get dictionary value: Add a get dictionary value action below the get contents from URL action. This action converts the JSON response into a dictionary so you can work with its contents.Get value for key: In the \"key\" field, type \"OPEN LINK IN BROWSER\" (case sensitive).Open URLs: Set the value to \"dictionary value\".",3,{"id":63,"title":64,"titles":65,"content":66,"level":61},"\u002Fguides\u002Fapple-shortcuts#trigger-a-bot-run-from-your-mac-dock","Trigger a bot run from your Mac dock",[43,53],"Your Apple Shortcut can be added to your macOS dock, allowing you easy access to your triggers with a single click. Open the \"Shortcuts app\" on your Mac.Right-click (or Control-click) on the shortcut you want to add to the Dock.Select \"Add to Dock\" from the context menu.",{"id":68,"title":69,"titles":70,"content":71,"level":61},"\u002Fguides\u002Fapple-shortcuts#trigger-a-bot-run-from-the-command-line","Trigger a bot run from the command line",[43,53],"Apple developers have made it possible to trigger Apple Shortcuts from the command line. Open the Terminal and type the following command: shortcuts run \"My bot's name\"",{"id":73,"title":74,"titles":75,"content":76,"level":61},"\u002Fguides\u002Fapple-shortcuts#trigger-bot-runs-with-siri","Trigger bot runs with Siri",[43,53],"You can trigger your Shortcuts using Siri, which means you can run your bot tasks in the axiom.ai cloud using voice commands. The following prompt will allow you to run your Shortcut, which will trigger your axiom.ai automation: \"Hi Siri, run shortcut\" then \"Name of shortcut\"",{"id":78,"title":79,"titles":80,"content":81,"level":15},"\u002Fguides\u002Fapple-shortcuts#testing-your-workflow","Testing your workflow",[43],"Test the shortcut by tapping run. Apple Shortcuts will display any error messages and you should follow these for more information. If your automation is triggered successfully but the automation has run into an error, you will find these in your run reports.",{"id":83,"title":84,"titles":85,"content":86,"level":15},"\u002Fguides\u002Fapple-shortcuts#wrapping-up","Wrapping up",[43],"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! Information valid as of 29th October 2024, tested on iOS18, iPadOS18, macOS15. 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}",{"id":88,"title":89,"titles":90,"content":91,"level":9},"\u002Fguides\u002Fautomate-facebook-messages","How to automate messages on Facebook",[],"This guide shows how to automate sending Facebook Messenger messages using a Google Sheet and axiom.ai’s no-code bot. 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.",{"id":93,"title":94,"titles":95,"content":96,"level":15},"\u002Fguides\u002Fautomate-facebook-messages#get-started-set-up-your-google-sheet","Get started: Set up your Google Sheet",[89],"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 \"Facebook Messenger bot\".. Set up a tab with profile links to message.",{"id":98,"title":99,"titles":100,"content":101,"level":15},"\u002Fguides\u002Fautomate-facebook-messages#install-the-facebook-messenger-bot","Install the Facebook Messenger bot",[89],"To install this Facebook Messenger bot, click \"Install template\".. If you’re a new user, you’ll have to click \"Install Chrome extension\"., then create a free axiom.ai account to edit the template. Once installed, click 'Start'. axiom.ai will guide you through the steps you need to configure in the app.",{"id":103,"title":104,"titles":105,"content":106,"level":15},"\u002Fguides\u002Fautomate-facebook-messages#configure-your-facebook-messenger-bot-in-four-easy-steps","Configure your Facebook Messenger bot in four easy steps",[89],"Step 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the Facebook profile links.Step 2.0 Loop through dataStep 2.1 Go to page: Profile pageEnter URL: Click 'Insert data', choose google-sheet-data, and select the column with Facebook profile links.Step 2.2 Click Element: Message^Step 2.3 Enter Text: MessageText: Input the message to be sent.Step 2.4 Press Key(s): Send message^Step 2.5 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with Facebook links.^ Preconfigured",{"id":108,"title":109,"titles":110,"content":111,"level":15},"\u002Fguides\u002Fautomate-facebook-messages#run-your-facebook-messenger-bot","Run your Facebook Messenger bot",[89],"To test this Facebook Messenger bot, disable step 2.2 to prevent messages being sent.\nIf you wish to schedule the bot add steps to login.",{"id":113,"title":33,"titles":114,"content":115,"level":15},"\u002Fguides\u002Fautomate-facebook-messages#customize-your-template",[89],"Like all Axiom templates, 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 \"Insert data\".",{"id":117,"title":38,"titles":118,"content":119,"level":15},"\u002Fguides\u002Fautomate-facebook-messages#troubleshooting",[89],"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 add steps to login. Message button not clicked? Click Select and reselect the button.Message not being sent? Try re-recording the Return key action. We offer excellent customer support. If you need help, get in touch.",{"id":121,"title":122,"titles":123,"content":124,"level":9},"\u002Fguides\u002Fautomate-facebook-posts","How to automate posting to Facebook with a bot",[],"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. 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 \"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.",{"id":126,"title":94,"titles":127,"content":128,"level":15},"\u002Fguides\u002Fautomate-facebook-posts#get-started-set-up-your-google-sheet",[122],"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 \"Facebook posts\".",{"id":130,"title":131,"titles":132,"content":133,"level":15},"\u002Fguides\u002Fautomate-facebook-posts#install-the-facebook-post-bot","Install the Facebook post bot",[122],"To install this FB 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":135,"title":136,"titles":137,"content":138,"level":15},"\u002Fguides\u002Fautomate-facebook-posts#configure-your-facebook-post-bot-in-four-easy-steps","Configure your Facebook post bot in four easy steps",[122],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to selectSheet name: Choose the tab with the posts in it2.0 Loop through data2.1 Go to page: facebook.com^2.2 Click element: What's on your mind?^2.3 Enter text: Post messageText: Click 'Insert data', select [google-sheet-data]2.4 Click element: Picture icon button^2.5 Upload a file: Grey upload fieldFile Path: Click 'Insert data', select [google-sheet-data]2.6 Click element: Post^2.7 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to selectSheet name: Choose the tab with the posts in it",{"id":140,"title":141,"titles":142,"content":143,"level":15},"\u002Fguides\u002Fautomate-facebook-posts#run-your-facebook-post-bot","Run your Facebook post bot",[122],"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, add steps to login. 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 'Upload from Google drive' step.",{"id":145,"title":33,"titles":146,"content":35,"level":15},"\u002Fguides\u002Fautomate-facebook-posts#customize-your-template",[122],{"id":148,"title":38,"titles":149,"content":150,"level":15},"\u002Fguides\u002Fautomate-facebook-posts#troubleshooting",[122],"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 add steps to login. 'What's on your mind?' button not found?\nReselect the button. It's using the custom selector setting 'element text'.Text not entering?\nReselect the 'What's on your mind?' text input field.Image icon not found?\nReselect the picture icon element.Upload field not found?\nReselect the grey \"Add photos\u002Fvideos\" upload area.File not uploading?Add a wait step after the upload, especially for large files. We offer excellent customer support. If you need help, get in touch.\nTo learn more, read this full in-depth guide on automating posting to facebook.",{"id":152,"title":153,"titles":154,"content":155,"level":9},"\u002Fguides\u002Fautomate-gmail-inbox-clean","How to clean up your overflowing Gmail Inbox",[],"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. 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.",{"id":157,"title":158,"titles":159,"content":160,"level":15},"\u002Fguides\u002Fautomate-gmail-inbox-clean#get-started-install-the-gmail-inbox-cleaner","Get started: install the Gmail inbox cleaner",[153],"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. Once installed, click 'Start'. axiom.ai will guide you through the single step you need to configure in the app.",{"id":162,"title":163,"titles":164,"content":165,"level":15},"\u002Fguides\u002Fautomate-gmail-inbox-clean#configure-your-gmail-inbox-cleaner-in-60-seconds","Configure your Gmail inbox cleaner in 60 seconds",[153],"Step 1.0 Enter custom data: Add terms to search byCustom data: Enter emails or search terms, one per line.Step 2.0 – 3.8^ Preconfigured",{"id":167,"title":168,"titles":169,"content":170,"level":15},"\u002Fguides\u002Fautomate-gmail-inbox-clean#run-your-gmail-inbox-cleaner","Run your Gmail inbox cleaner",[153],"For safety, first run a test using non-critical email addresses to search and remove.",{"id":172,"title":33,"titles":173,"content":35,"level":15},"\u002Fguides\u002Fautomate-gmail-inbox-clean#customize-your-template",[153],{"id":175,"title":176,"titles":177,"content":178,"level":15},"\u002Fguides\u002Fautomate-gmail-inbox-clean#trouibleshooting","Trouibleshooting",[153],"We recommend you watch the video to troubleshoot. Loops once?\nIn Step 1.0 – Enter custom data, check for blank spaces in the input field.Wrong URL?\nIn Step 2.0 – Go to page, make sure the URL is set to https:\u002F\u002Fmail.google.com\u002Fmail\u002Fu\u002F0\u002F#inbox.Search not working?\nIn Step 3.1 – Enter text, reselect the \"Search in mail\" input field.Select All not clicked?\nIn Step 3.3 – Click element, reselect the \"Select All\" tick box.Link not clicked?\nIn Step 3.4 – Get data from bot's current page, reselect \"Select all conversations that match this search\".Scraper retrying too long?\nIn the same step, change \"Number of attempts when results not found\" to 1.Condition not working?\nIn Step 3.5 – If condition, make sure [scrape-data] is set.Delete not clicked?\nIn Step 3.7 – Click element, reselect the \"Delete\" button.Bot behaves randomly?\nIn Step 3.8 – Wait, increase the wait time. We offer excellent customer support. If you need help, get in touch.\nIf you are keen to learn more about browser automation, why not create an email blast using Gmail?",{"id":180,"title":181,"titles":182,"content":183,"level":9},"\u002Fguides\u002Fautomate-screenshots","How to automate screenshots",[],"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. 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.",{"id":185,"title":12,"titles":186,"content":187,"level":15},"\u002Fguides\u002Fautomate-screenshots#get-started-create-your-google-sheet",[181],"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 'Automate screenshots’ and set up a tab called 'Website links'.",{"id":189,"title":190,"titles":191,"content":192,"level":15},"\u002Fguides\u002Fautomate-screenshots#install-the-screenshot-bot","Install the Screenshot bot",[181],"To install this Screenshot 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":194,"title":195,"titles":196,"content":197,"level":15},"\u002Fguides\u002Fautomate-screenshots#configure-your-screenshot-bot-in-minutes","Configure your Screenshot bot in minutes",[181],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab called 'Website links'.2.0 Loop through data2.1 Go to pageEnter URL: Click 'Insert Data', select google-sheet-data, and choose the column with the links in it.2.2 Save screenshot locallyFolder: Set a folder to download to.File name: Optional.File type: Select file types JPEG or PNG.Overwrite existing file: Optional.2.3 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created for website links.First row: Set to 1.Last row: Set to 1.",{"id":199,"title":200,"titles":201,"content":202,"level":15},"\u002Fguides\u002Fautomate-screenshots#run-your-screenshot-bot","Run your Screenshot bot",[181],"We suggest running a test first, stopping the bot after a few loops, and reviewing the screenshots.",{"id":204,"title":33,"titles":205,"content":206,"level":15},"\u002Fguides\u002Fautomate-screenshots#customize-your-template",[181],"Like all Axiom templates, 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 Download to Google Drive step.",{"id":208,"title":38,"titles":209,"content":210,"level":15},"\u002Fguides\u002Fautomate-screenshots#troubleshooting",[181],"We recommend you watch the video to troubleshoot. Want to set a specific number of loops?\nIn Step 1.0, set the Last Cell to something like AE100 to scrape 100 rows.Files not saving?\nIn Step 2.2 – Save screenshot locally, check folder permissions on your computer. We offer excellent customer support. If you need help, get in touch.",{"id":212,"title":213,"titles":214,"content":215,"level":9},"\u002Fguides\u002Fautomator","How to use Apple Automator to trigger an axiom.ai automation",[],"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. 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.",{"id":217,"title":48,"titles":218,"content":219,"level":15},"\u002Fguides\u002Fautomator#getting-started",[213],"To get started, you will need thing from the axiom.ai Chrome extension: API key - The API key is found on the dashboard.Automation name - Get the name of the automation you wish to trigger.Endpoint - The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.",{"id":221,"title":222,"titles":223,"content":224,"level":15},"\u002Fguides\u002Fautomator#trigger-an-axiomai-automation-using-automator","Trigger an axiom.ai automation using Automator",[213],"To get started, create your Automator workflow as you normally would, when you're ready to trigger your automation, continue this guide. Using the data from above, we will construct multiple variables called webhookURL, to store the URL of the axiom.ai API, and jsonData to construct the payload that is to be sent to the automation. There are numerous modifications that will be needed: \u003CYOUR_KEY> - This should be replaced with your API key.\u003CAUTOMATION_NAME> - This should be replaced with your automation name.data - The contents inside of the data 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. When ready, add a \"Run AppleScript\" component to your workflow to add thing script into your workflow and trigger your automation: 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",{"id":226,"title":79,"titles":227,"content":228,"level":15},"\u002Fguides\u002Fautomator#testing-your-workflow",[213],"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. For more information on errors related to the axiom.ai API, see Common Errors.",{"id":230,"title":84,"titles":231,"content":232,"level":15},"\u002Fguides\u002Fautomator#wrapping-up",[213],"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. Information accurate as of January 2025, changes to either platform may render these instructions non-functional. 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);}",{"id":234,"title":235,"titles":236,"content":237,"level":9},"\u002Fguides\u002Fbaserow","How to post data to Baserow using an axiom.ai automation",[],"Learn how to automatically post to your Baserow account using an axiom.ai automation 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.",{"id":239,"title":48,"titles":240,"content":241,"level":15},"\u002Fguides\u002Fbaserow#getting-started",[235],"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. To send data to Baserow from your automation, you'll need the following information from your database: Table ID - You'll find this in the URL - navigate to your table, and grab the second last number. For example, https:\u002F\u002Fbaserow.io\u002Fdatabase\u002Fxxxxxx\u002Ftable\u002F\u003CTABLE_ID>\u002Fxxxxxx.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.",{"id":243,"title":244,"titles":245,"content":246,"level":15},"\u002Fguides\u002Fbaserow#automating-baserow-using-an-axiomai-automation","Automating Baserow using an axiom.ai automation",[235],"There are many functions of Baserow that can be used within your automation to send data to Baserow, or fetch data from Baserow.",{"id":248,"title":249,"titles":250,"content":251,"level":61},"\u002Fguides\u002Fbaserow#sending-data-to-baserow","Sending data to Baserow",[235,244],"Create your automation as you normally would - when you're ready to send your data onto Baserow, continue this guide. If the data that you are looking to send contains multiple rows of data, first add a Loop through data 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 Write Javascript step. If you only have a single row of data, you can skip adding the \"Loop through data\" step. First, we will establish some variables to hold important information that your script will need, replacing the text within the \u003C > with your data: 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>\"; 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. 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(); Most of the code above will not need to be modified, however, you will need to update the code inside of the body: new URLSearchParams({}) code with the fields and data that you wish to send. The first item in the key-value pair, Name, for example, needs to be the name of a single column. The second item will be the data that you are sending to Baserow - remember, you can use the Insert data option to insert data tokens from throughout your automation. By default, when you create a row using this method this will trigger webhooks - if you are following the guide on Triggering an axiom.ai automation using Baserow you may wish to keep this in mind. This can be disabled by adding &send_webhook_events=false to the end of the baserow_url variable in the code. 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 Wait steps inside your \"Loop through data\" step.",{"id":253,"title":254,"titles":255,"content":256,"level":61},"\u002Fguides\u002Fbaserow#retrieving-a-single-row-from-baserow","Retrieving a single row from Baserow",[235,244],"Create your automation as you normally would - when you're ready to retrieve your data from Baserow, continue this guide. 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: 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`; 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. 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(); Your row data will then be contained within the code-data data token within your automation. Note: this data will contain additional data such as the Row ID, it's recommended you review the data using a Display a message step before use.",{"id":258,"title":259,"titles":260,"content":261,"level":61},"\u002Fguides\u002Fbaserow#retrieving-multiple-rows-from-baserow","Retrieving multiple rows from Baserow",[235,244],"Create your automation as you normally would - when you're ready to retrieve your data from Baserow, continue this guide. 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: 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`; 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. 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(); There are various different parameters that can be provided to Baserow to customise the data that you are retrieving, such as page, size, search and order_by. We recommend reviewing their API documentation for more details: https:\u002F\u002Fbaserow.io\u002Fapi-docs\u002Fdatabase\u002F\u003CTABLE_ID>. All rows of data will be contained within the code-data data token within your automation to use in later steps.",{"id":263,"title":264,"titles":265,"content":266,"level":15},"\u002Fguides\u002Fbaserow#triggering-an-axiomai-automation-using-baserow","Triggering an axiom.ai automation using Baserow",[235],"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 Zapier or Make as a service layer between axiom.ai and Baserow.",{"id":268,"title":79,"titles":269,"content":270,"level":15},"\u002Fguides\u002Fbaserow#testing-your-workflow",[235],"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 Write data to a Google Sheet step. 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. For further advice on debugging your automations, see How to debug and Common errors.",{"id":272,"title":84,"titles":273,"content":274,"level":15},"\u002Fguides\u002Fbaserow#wrapping-up",[235],"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 community Information correct as of 15th January 2025, changes to either platforms may require updates 1 Triggering your automations via webhook requires a paid subscription, see pricing for more details. 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}",{"id":276,"title":277,"titles":278,"content":279,"level":9},"\u002Fguides\u002Fblack-box","How to scrape Amazon product data from Black Box into a Google Sheet",[],"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. Black Box, a tool from 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. 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. 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 Cerebro or BlackBox.",{"id":281,"title":282,"titles":283,"content":284,"level":15},"\u002Fguides\u002Fblack-box#getting-started","Getting Started",[277],"To begin, create a Google Sheet and add two tabs for search criteria and another to store the extracted data. Create a new Google Sheet: If you're logged into Google, type sheet.new in your browser to quickly create a new sheet.Set up tab one: Enter your criteria into the first tab.Set up tab two: Name the second tab \"Products\" and leave it blank.",{"id":286,"title":287,"titles":288,"content":289,"level":15},"\u002Fguides\u002Fblack-box#how-to-automate-extracting-product-data-from-black-box","How to automate extracting product data from Black Box",[277],"To start building your bot, open axiom.ai and click \"New automation\" to use the no-code bot builder. Then, click \"Add first step\" and follow the guide. Download the template we created for this scraper. Click to learn how to upload it. 1.0 Read data from a Google SheetSpreadsheet: Search for and add the Google Sheet you created.Sheet name: Choose the tab containing the search criteria.2.0 Loop through dataLoop through data: Click Insert Data and select google-sheet-data. The loop step will now iterate through the search criteria in the Google Sheet.2.1 Go to pageEnter URL: The URL will look something like this: \"https:\u002F\u002Fmembers.helium10.com\u002Fblack-box\u002Fproducts?accountId=xxxxxxx\".2.2 Select listSelect: Click Select, then select the Market place dropdown.Text: In the text field, click Insert Data and choose the Google Sheet data. In the data preview, select column A with the marketplace value.\n  \n2.3 Select listSelect: Click Select, then select the Category dropdown.Text: In the text field, click Insert Data and choose the Google Sheet data. In the data preview, select column A with the category value.2.4 Select listSelect: Click Select, then select the Improvement range dropdown.Text: In the text field, click Insert Data and choose the Google Sheet data. In the data preview, select column A with the improvement range value.2.5 Select listSelect: Click Select, then select the Price range dropdown.Text: In the text field, click Insert Data and choose the Google Sheet data. In the data preview, select column A with the price range value.2.6 Click elementSelect: Click Select, then click on Custom and tick Use element text. Finally, click Complete.2.7 Get data from bot's current pageSelect: Click Select to open the multi-selector tool.In column A, click the arrow, then click Select link. On the Black Box page, click the image in the Product column, then repeat in the row below.\n  \nPress Shift + N to add a new column. On the page, select the Product title in one row, then repeat in the next.Add another column. On the page, select the BSR, selecting the number in one row, then repeat in the next.To extract the Price, press Shift + N to add a new column. Then, in the new column, click the arrow and select Custom Selector, insert [data-testid=\"table-cell-price\"], then press Complete.\n  \nAdd one more column. On the page, select the Brand in one row, then repeat in the next.Select the Next button for pagination using the right arrow key.Set a maximum number of results you wish to scrape. I chose 100 when making this bot.3.0 Write data to a Google SheetSpreadsheet: Select your Google Sheet.Sheet Name: Choose the tab where you want to write the Amazon product data.Data: Click Insert Data and choose scraped-data-.Write Options: Select Add to Existing Data to append new data without deleting existing data.4.0 Delete rows from a Google SheetSpreadsheet: Select your Google Sheet.Sheet Name: Choose the tab containing the search criteria.First Row to Delete: Leave this set to 1.Last Row to Delete: Set to 10. The Black Box automation, when completed, should resemble the diagram below.",{"id":291,"title":292,"titles":293,"content":294,"level":15},"\u002Fguides\u002Fblack-box#testing-your-black-box-automation","Testing your Black Box automation",[277],"Once you have saved your Helium 10 Black Box automation, click \"Run\" within the axiom.ai extension to start extracting Amazon product data.",{"id":296,"title":38,"titles":297,"content":298,"level":15},"\u002Fguides\u002Fblack-box#troubleshooting",[277],"Elements not found?\nIf elements are not being clicked, try reselecting them. Changing marketplaces can affect selectors.Keyword data not loading in time?\nIn Step 8, adjust the wait time. The Cerebro tool can sometimes be slow to load data.",{"id":300,"title":301,"titles":302,"content":303,"level":15},"\u002Fguides\u002Fblack-box#try-out-the-template","Try out the template",[277],"While creating this guide and testing axiom.ai on Helium 10, we also built a template. If you choose to use the template, you will need to do the following: Step 1: Add your own Google Sheet.Step 2.1: Add the URL to the Black Box page while logged in.Step 2.7: Select the data you wish to scrape.Steps 2.8 and 2.9: Add your Google Sheet. Please note that this template is a starting point, and you may need to customize it. Click to download the Black Box template.",{"id":305,"title":84,"titles":306,"content":307,"level":15},"\u002Fguides\u002Fblack-box#wrapping-up",[277],"Extracting product data from Black Box is straightforward. You can simply point and select the data you want to extract. Some fields, like Price, may require a custom selector, but it’s easy to set up. You can fully customize this automation by adding the search criteria you want and selecting the data you wish to scrape. The same methods also apply to Advanced Search Mode. If you need help automating Helium 10, reach out to support@axiom.ai. Testing was completed on January 29, 2025. Features in Helium 10 or axiom.ai may change over time, and updates may be needed.",{"id":309,"title":310,"titles":311,"content":312,"level":9},"\u002Fguides\u002Fbluesky","How to post to Bluesky using an axiom.ai automation",[],"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. 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. 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.",{"id":314,"title":48,"titles":315,"content":316,"level":15},"\u002Fguides\u002Fbluesky#getting-started",[310],"A Bluesky account is required to post on Bluesky, head to bsky.app to get started. Username - Your username can be found on your Bluesky profile.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. To learn more about managing login credentials within your automations, see Logins.",{"id":318,"title":319,"titles":320,"content":321,"level":15},"\u002Fguides\u002Fbluesky#creating-a-new-bluesky-post-using-an-axiomai-automation","Creating a new Bluesky post using an axiom.ai automation",[310],"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 Write JavaScript step, see full script for the whole script.",{"id":323,"title":324,"titles":325,"content":326,"level":61},"\u002Fguides\u002Fbluesky#step-1-creating-an-authorisation-session","Step 1: Creating an authorisation session",[310,319],"Authorising your account is the first step to automating posting on Bluesky. To do this, you will need your username and app password to get started. To begin, create an object containing your credentials: const authorisationData = {\n    \"identifier\": \"\u003CUSERNAME>.bsky.social\",\n    \"password\": \"\u003CAPP_PASSWORD>\"\n} Now that you have this, we can create a method to send a POST request to Bluesky to authorise your account. We'll also be creating the accessJwt and did variables to hold the two pieces of data we need from the response. We will be sending this request to the https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.server.createSession endpoint. 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} If all goes well, you'll now be authorised to continue with your script and create new posts on Bluesky.",{"id":328,"title":329,"titles":330,"content":331,"level":61},"\u002Fguides\u002Fbluesky#step-2-create-a-new-post","Step 2: Create a new post",[310,319],"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 accessJwt and did variables previously. 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} You'll notice in the line \"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. Next, we will want to create the post itself. We will be using the https:\u002F\u002Fbsky.social\u002Fxrpc\u002Fcom.atproto.repo.createRecord endpoint. We'll also be creating a variable called status to store the status of the response. 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} Finally, we are going to want to call these functions and return a response to be handled in step 3. await authorise();\nawait createPost();\n\nreturn status;",{"id":333,"title":334,"titles":335,"content":336,"level":61},"\u002Fguides\u002Fbluesky#step-3-handling-the-response","Step 3: Handling the response",[310,319],"Now that your post has been posted, we can make use of your data. If all has gone well, the status variable that has been returned will contain a string valid. This will be stored in the code-data data token that is output from the 'Write Javascript' step. You can use this in various steps to make a dynamic automation, such as: If\u002Felse step.Continue only if a condition is met step.Conditionally jump to another step step.",{"id":338,"title":339,"titles":340,"content":341,"level":61},"\u002Fguides\u002Fbluesky#full-script","Full script",[310,319],"As previously mentioned, this script should be contained inside a single \"Write Javascript\" step. Find the full script below: 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;",{"id":343,"title":79,"titles":344,"content":345,"level":15},"\u002Fguides\u002Fbluesky#testing-your-workflow",[310],"Once you have the script in place, hit \"Run\". If there are any errors, follow the instructions or see common errors for more details. If successful, you will see your post appear on Bluesky - congrats!",{"id":347,"title":84,"titles":348,"content":349,"level":15},"\u002Fguides\u002Fbluesky#wrapping-up",[310],"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 templates. 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);}",{"id":351,"title":352,"titles":353,"content":354,"level":9},"\u002Fguides\u002Fcapture-network-requests","How to capture network requests from a page",[],"Learn how to capture network requests from a page using an axiom.ai automation 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.",{"id":356,"title":48,"titles":357,"content":358,"level":15},"\u002Fguides\u002Fcapture-network-requests#getting-started",[352],"To get started, create a new automation.",{"id":360,"title":361,"titles":362,"content":363,"level":15},"\u002Fguides\u002Fcapture-network-requests#capturing-network-requests","Capturing network requests",[352],"As the first step in your automation, add a Go to page step. Then, add a Write Javascript step to your automation. The following will return an array of arrays that contains the entryType and the name of the entries. 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; The window.performance.getEntriesByType(\"resource\") will return an array of 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: developer.mozilla.org. You'll find the data retrieved in the code-data data token. This can be used in later steps of your automation, for example, written to a Google Sheet using the Write data to a Google Sheet step.",{"id":365,"title":79,"titles":366,"content":367,"level":15},"\u002Fguides\u002Fcapture-network-requests#testing-your-workflow",[352],"To test, ensure that you have a URL set within the \"Go to page\" step. Next, you can use the Display a message step, or the Write data to a Google Sheet step to output the code-data data token that should contain the data regarding the network requests that have been captured.",{"id":369,"title":84,"titles":370,"content":371,"level":15},"\u002Fguides\u002Fcapture-network-requests#wrapping-up",[352],"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 community. 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);}",{"id":373,"title":374,"titles":375,"content":376,"level":9},"\u002Fguides\u002Fcerebro","How to download ASIN data from Cerebro into a Google Sheet",[],"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. Cerebro is a tool from Helium10 that allows Amazon sellers to conduct 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. In this guide, you'll learn how to use a bot to load the Cerebro homepage, enter 10 ASINs into the search field, and click \"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. 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. Check out our other Helium10 guides if you're interested in automating Black Box or Magnet.",{"id":378,"title":48,"titles":379,"content":380,"level":15},"\u002Fguides\u002Fcerebro#getting-started",[374],"To begin, create a Google Sheet and add two tabs: one for ASINs and another for storing extracted data. Create a new Google Sheet: If you're logged into Google, type sheet.new in your browser to quickly create a new sheet.Set up tab one: Add your ASIN numbers into the first tab, column A.Set up tab two: Name the second tab \"ASIN data\" and leave it blank.",{"id":382,"title":383,"titles":384,"content":385,"level":15},"\u002Fguides\u002Fcerebro#how-to-automate-extracting-the-asin-data","How to automate extracting the ASIN data",[374],"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. Download the template we created for this scraper. Click to learn how to upload it. 1.0 Read data from a Google SheetSpreadsheet: Search for and add the Google Sheet you created.Sheet name: Choose the tab containing the ASINs.Last cell: Enter 10, the maximum number of ASINs we can search per loop.2.0 Go to pageEnter URL: The URL will look something like this: \"members.helium10.com\u002Fcerebro\u002Famazon\u002Fview\u002Fxxxxxxxx?accountId=xxxxxxx\".\n  \n3.0 Loop through dataLoop through data: Click Insert Data and select google-sheet-data. The loop step will now iterate through the ASINs in the Google Sheet.4.0 Enter textText: Click Insert Data and select google-sheet-data to pass the ASIN numbers from the sheet.Select column: Choose column A in the preview.\n  \n5.0 Press key(s)Key: Press Record, then Tab.6.0 Click elementSelect: Click Select, then click on the Get Keywords button.Custom: In the selector tool, click Custom, then tick Use element text instead of HTML. Finally, click Complete.7.0 Click elementSelect: Click Select, then click on Custom and insert [data-testid=\"runnewsearch\"] or [data-testid=\"loadfromhistory\"].Optional Click: Tick this option, as the pop-up does not always appear.\n  \n8.0 WaitWait time: Insert 7000 to make the bot wait 7 seconds. You may need to experiment with wait time.9.0 Click elementSelect: Click Select, then click on Custom and insert #cerebro-amazon-single-com_wrapper button[data-testid=\"exportdata\"].10.0 Download fileSelect: Click Select, then click Custom and tick Use element text instead of HTML. Insert \"...as a CSV file.\" Then click Complete.Folder: Set a folder path to download into.File name: Enter a name to save the file as.11.0 WaitWait time: Insert 4000 to make the bot wait 4 seconds. You may need to experiment with wait time.12.0 Import CSV FileImport CSV: Insert the folder path, then click Insert Data and select File-download-data to add the file name to the path.\n  \n13.0 Write data to a Google SheetSpreadsheet: Select your Google Sheet.Sheet Name: Choose the tab where you want to write the ASIN data.Data: Click Insert Data and choose Imported-csv.Write Options: Select Add to Existing Data to append new data without deleting the existing data.14.0 Delete rows from a Google SheetSpreadsheet: Select your Google Sheet.Sheet Name: Choose the tab containing the ASIN numbers.First Row to Delete: Leave this set to 1.Last Row to Delete: Set to 10.15.0 Jump to another stepJump to step: Select your Google Sheet.Maximum cycles: Set the maximum number of times the bot should repeat the process. The Cerebro automation, when completed, should resemble the diagram below.",{"id":387,"title":388,"titles":389,"content":390,"level":15},"\u002Fguides\u002Fcerebro#testing-your-cerebro-automation","Testing your Cerebro automation",[374],"Once you have saved your Helium10 automation, click \"Run\" within the axiom.ai extension to start extracting ASIN data.",{"id":392,"title":393,"titles":394,"content":395,"level":61},"\u002Fguides\u002Fcerebro#issues-you-may-encounter","Issues you may encounter:",[374,388],"Click elements not found: If elements are not being clicked, you may need to reselect them. Changing marketplaces can sometimes affect selectors.Keyword data not loading in time: Cerebro can sometimes be slow to load data. You may need to adjust the wait time in Step 8.",{"id":397,"title":398,"titles":399,"content":400,"level":15},"\u002Fguides\u002Fcerebro#try-the-cerebro-template","Try the Cerebro template",[374],"While creating this guide and testing axiom.ai on Helium10, we also built a template. If you choose to use the template, you will need to do the following: Step 1: Add your own Google Sheet.Step 2: Insert the URL to the Cerebro landing page.Step 8: Insert the download path and file name.Step 10: Set the import path, including the download file token (contains the file name).Steps 11 and 12: Add your own Google Sheet. Please note that this template is a starting point, and you may need to customize it. Click to download the Cerebro template.",{"id":402,"title":84,"titles":403,"content":404,"level":15},"\u002Fguides\u002Fcerebro#wrapping-up",[374],"Extracting data in Cerebro isn’t always straightforward, but it's possible with automation. For example, changing marketplaces can affect the CSS selectors used to click on elements. I also found that, due to the large quantity of data, it's faster to download the CSV and import it into a Google Sheet rather than scrape the data page by page. If you need help automating Helium10, reach out to support@axiom.ai, and we’ll help you create an automation. Testing was completed on January 22, 2025. Features in Helium10 or axiom.ai may change over time, and updates may be needed.",{"id":406,"title":407,"titles":408,"content":409,"level":9},"\u002Fguides\u002Fchatgpt-web-scraper","How to scrape data with ChatGPT from any website",[],"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. 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.",{"id":411,"title":12,"titles":412,"content":413,"level":15},"\u002Fguides\u002Fchatgpt-web-scraper#get-started-create-your-google-sheet",[407],"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 ChatGPT Scrape' and set up a tab called Links. Add another tab called Data.",{"id":415,"title":416,"titles":417,"content":418,"level":15},"\u002Fguides\u002Fchatgpt-web-scraper#install-the-chatgpt-template","Install the ChatGPT template",[407],"To install this ChatGPT template 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. Once installed, click start. axiom.ai will guide you through the steps you need to configure in the app.",{"id":420,"title":421,"titles":422,"content":423,"level":15},"\u002Fguides\u002Fchatgpt-web-scraper#configure-your-chatgpt-scraper-in-five-easy-steps","Configure your ChatGPT scraper in Five easy steps",[407],"Please note in step 2.2 Get data from bot's current page you need to select a single block of content with the selector tool. 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab called \"Amazon product links\".2.0 Loop through data2.1 Go to pageEnter URL: Click 'Insert Data', select google-sheet-data, and choose the column with the links.2.2 Get data from bot's current pageSelect: Point and click to select the data you wish to scrape using a single selector.Max Results: Set to 1.2.3 Extract data with ChatGPTChatGPT API key: Enter your API key.Data: Insert scrape-data.Extract values: Enter values to extract (e.g. name, email, job title).2.4 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created.DATA: Select chatgpt-data.Clear data before writing | Add to existing data: Set to \"Add to existing data\".2.5 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to selectSheet name: Choose the tab you created for links.First row: Set to 1.Last row: Set to 1.",{"id":425,"title":426,"titles":427,"content":30,"level":15},"\u002Fguides\u002Fchatgpt-web-scraper#testing-and-running-your-chatgpt-web-scraper","Testing and running your ChatGPT web scraper",[407],{"id":429,"title":33,"titles":430,"content":35,"level":15},"\u002Fguides\u002Fchatgpt-web-scraper#customize-your-template",[407],{"id":432,"title":38,"titles":433,"content":434,"level":15},"\u002Fguides\u002Fchatgpt-web-scraper#troubleshooting",[407],"We recommend you watch the video to troubleshoot. Want to set a number of loops?\nSet a Last Cell in the Read data from a Google Sheet step — for example, AE50 will scrape 50 rows.Not scraping content correctly?\nIn Get data from bot's current page, select a single block of content using the selector tool.Want to scrape the whole page?\nUse a custom selector like body in the Get data from bot's current page step.Scrape running slowly?\nToggle Configure scraper, then set No. of retry... to 1 in the same step.Data not showing up in ChatGPT?\nMake sure Data is set to scrape-data",{"id":436,"title":437,"titles":438,"content":439,"level":9},"\u002Fguides\u002Fcheck-for-login","How to automate checking if a site requires a login",[],"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. 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 \"Log in.\" By using an \"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. 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 Logins guide. For this example, we are going to store credentials within Google Sheets.",{"id":441,"title":442,"titles":443,"content":444,"level":15},"\u002Fguides\u002Fcheck-for-login#creating-your-automation","Creating your automation",[437],"Create a new automation by clicking \"New automation\", and then use the 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: Navigate to the page.Check if the page is a login page.Enter your email.Enter your password.Click \"login\".",{"id":446,"title":447,"titles":448,"content":449,"level":61},"\u002Fguides\u002Fcheck-for-login#navigate-to-the-site","Navigate to the site",[437,442],"Use the Go to page step to navigate to the site that you wish to automate - this does not have to be the \"login\" page as sites will often redirect to it if a login is required.",{"id":451,"title":452,"titles":453,"content":454,"level":61},"\u002Fguides\u002Fcheck-for-login#check-if-the-page-is-a-login-page","Check if the page is a login page",[437,442],"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. The 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 login\" or sign-in\", for example. The Get data from bot's current page 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 \"Login\" in it's contents. We recommend encapsulating this with a Try \u002F Catch step as this will produce an error if the bot does not need to log into the site, and the \"Try \u002F Catch\" step can catch this error.",{"id":456,"title":457,"titles":458,"content":459,"level":61},"\u002Fguides\u002Fcheck-for-login#checking-the-returned-output","Checking the returned output",[437,442],"The Get current bot URL step will return the current URL of the bot, you will need to use an If condition is true, run steps step to check this value. Add the step and configure as described below: 1.0 Data to check[current-url]: Select this as the value to evaluate.2.0 Condition to checkLogin: Enter the text value you want to match. If you have set up the Get data from bot's current page step inside a \"Try \u002F Catch\" step, you will need to insert any further steps related to the login into the \"try\" portion of this step. You will need to use an If condition is true, run steps step to check this the value returned from the step against the value that you are looking for. Add the step inside the \"try\" portion of the \"Try \u002F Catch\" step, under the \"Get data from bot's current page\" step and configure as described below: 1.0 Data to check[scrape-data]: Select this as the value to evaluate.2.0 Condition to checkLogin: Enter the text value to check for, for example \"Login\".",{"id":461,"title":462,"titles":463,"content":464,"level":61},"\u002Fguides\u002Fcheck-for-login#entering-credentials","Entering credentials",[437,442],"Next, inside of the \"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. Finally, use a Click element step to click the \"login\" button on the site to complete the login.",{"id":466,"title":467,"titles":468,"content":469,"level":61},"\u002Fguides\u002Fcheck-for-login#final-automation-structure","Final automation structure",[437,442],"If you used the \"Get bot's current URL\" step, your automation should look similar to the structure below: 1.0 Go to page: Navigate to the login page.2.0 Get bot's current URL: Store the current page URL.3.0 If condition is true, run steps: Run the following steps only if the condition matches.\n3.1 Enter Text: Email type your email address.3.2 Enter Text: Password type your password.3.3 Click Element: Click the login button.4.0 Continue flow: Add any other steps here. If you used the \"Get data from bot's current page\" step, your automation should look similar to the structure below: 1.0 Go to page: Navigate to the login page.2.0 Try \u002F Catch: Run steps that may fail.\n2.1 Get data from bot's current page: Select login text.2.2 Catch.\n2.3 Enter Text: Email type your email address.2.4 Enter Text: Password type your password.2.5 Click Element: Click the login button.3.0 Other steps: Continue the flow as needed.",{"id":471,"title":84,"titles":472,"content":473,"level":15},"\u002Fguides\u002Fcheck-for-login#wrapping-up",[437],"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. We would also recommend reviewing our documentation on managing Logins for further tips and tricks to use, including using your pre-existing login session in the cloud, see Learn how to store cookies for more details. Some login activity may prompt the site to display a CAPTCHA challenge to continue, see our 2Captcha integration for more details on navigating sites with CAPTCHA enabled.",{"id":475,"title":476,"titles":477,"content":478,"level":9},"\u002Fguides\u002Fcurl","How to use cURL to trigger an axiom.ai automation",[],"Learn how to use cURL to trigger your automation. This allows for your automations to be triggered using the command line. 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.",{"id":480,"title":48,"titles":481,"content":482,"level":15},"\u002Fguides\u002Fcurl#getting-started",[476],"To get started, you will need the following from the axiom.ai Chrome extension: API key - The API key is found on the dashboard.Automation name - Get the name of the automation you wish to trigger.Endpoint - The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.",{"id":484,"title":485,"titles":486,"content":487,"level":15},"\u002Fguides\u002Fcurl#trigger-an-axiomai-automation-using-curl","Trigger an axiom.ai automation using cURL",[476],"Open your command line to get started, and use the following command to trigger your automation. You'll need the information from the getting started section of this guide. curl -X POST https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger -H \"Content-Type: application\u002Fjson\" -d \"{\\\"key\\\": \\\"\u003CAPI_KEY>\\\", \\\"name\\\": \\\"\u003CAUTOMATION_NAME>\\\", \\\"data\\\": []\"}\" Let's break down this command: curl - the application we are triggering.-X POST - the HTTP method to use.-h \"Content-Type: application\u002Fjson\" - the headers to pass along with the request.-d \"{\\\"key\\\": \\\"\u003CAPI_KEY>\\\", \\\"name\\\": \\\"\u003CAUTOMATION_NAME>\\\", \\\"data\\\": []\"} - the data to send in the request, formatted as per our trigger guide.",{"id":489,"title":490,"titles":491,"content":492,"level":15},"\u002Fguides\u002Fcurl#examples","Examples",[476],"",{"id":494,"title":495,"titles":496,"content":497,"level":61},"\u002Fguides\u002Fcurl#reporting-system-available-memory","Reporting system available memory",[476,490],"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 .bat file. @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 You'll need to add a receive data from another app step into your axiom.ai automation to be able to use the data within your automation.",{"id":499,"title":79,"titles":500,"content":501,"level":15},"\u002Fguides\u002Fcurl#testing-your-workflow",[476],"To test your workflow, hit ENTER on your command. If successful, you will receive a link to open the automation run in your browser, for example {\"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\"} 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 run reports of your account. 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.",{"id":503,"title":84,"titles":504,"content":505,"level":15},"\u002Fguides\u002Fcurl#wrapping-up",[476],"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. 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}",{"id":507,"title":508,"titles":509,"content":510,"level":9},"\u002Fguides\u002Fdata-input","How to automate data input from a Google sheet into a webform",[],"Learn how to create a simple bot that inputs data into a webform from a Google sheet in the browser. This guide shows you how to start creating a simple bot to input data into any web form. It's a great starting point 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. We also have a data entry template to get you started fast. Read data from a Google SheetGo to pageEnter textAdd steps hereClick element",{"id":512,"title":513,"titles":514,"content":515,"level":15},"\u002Fguides\u002Fdata-input#prepare-your-google-sheet","Prepare your Google Sheet",[508],"Create a Google sheet with some test data to run your automation with. Col ACol BNameSurnameNameSurnameNameSurname",{"id":517,"title":518,"titles":519,"content":520,"level":15},"\u002Fguides\u002Fdata-input#start-from-blank-adding-the-following-steps","Start from blank, adding the following steps",[508],"In the axiom.ai Chrome extension dashboard, click \"New Automation\" and then select \"Add first step\". Use the step finder to add the steps outlined below.",{"id":522,"title":523,"titles":524,"content":525,"level":15},"\u002Fguides\u002Fdata-input#add-a-read-data-from-a-google-sheet-step","Add a ‘Read data from a Google Sheet’ step",[508],"First we want to our test data from the Google Sheet. Spreadsheet - Search for the Google Sheet you created in the \"Spreadsheet\" field. Once found, click to select.Sheet name - Choose a sheet tab or leave blank to use the first tab.First cell - Start from a specified column and row, for example, \"A1\".Last cell - End at a specified column and row, for example, \"AB1\". ::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::",{"id":527,"title":528,"titles":529,"content":530,"level":15},"\u002Fguides\u002Fdata-input#add-a-go-to-page-step-to-load-the-web-form","Add a ‘Go to page’ step to load the web form",[508],"Next we instruct the bot to load our webform in Chrome. Enter URL - Insert the url to your webform.",{"id":532,"title":533,"titles":534,"content":535,"level":15},"\u002Fguides\u002Fdata-input#add-an-enter-text-step-to-input-data","Add an ‘Enter text’ step to input data",[508],"Next, we use an ‘Enter text’ step to input our data into a field. Text - Click ‘Insert data’ select ‘google-sheet-data’ to pass the message from the Sheet. Select column ‘A’ in the preview.",{"id":537,"title":538,"titles":539,"content":540,"level":15},"\u002Fguides\u002Fdata-input#add-a-click-element-to-click-the-submit-button","Add a ‘Click element’ to click the submit button",[508],"Our next step is to set up the click action for the form's 'submit' button. Select - Click \"Select\" highlight the ‘submit’ button click on it and press complete.",{"id":542,"title":543,"titles":544,"content":545,"level":15},"\u002Fguides\u002Fdata-input#continue-adding-your-steps-as-needed","Continue adding your steps as needed",[508],"Now just use the step finder to continue adding steps and complete your data entry bot.",{"id":547,"title":84,"titles":548,"content":549,"level":15},"\u002Fguides\u002Fdata-input#wrapping-up",[508],"Data can be easily 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 steps to automate many different web actions performed when filling in forms, such as selecting lists, date pickers, and key presses.",{"id":551,"title":552,"titles":553,"content":554,"level":9},"\u002Fguides\u002Fdata-input-from-google-sheet","How to automate data entry from a google sheet",[],"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. 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.",{"id":556,"title":94,"titles":557,"content":558,"level":15},"\u002Fguides\u002Fdata-input-from-google-sheet#get-started-set-up-your-google-sheet",[552],"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'.",{"id":560,"title":561,"titles":562,"content":563,"level":15},"\u002Fguides\u002Fdata-input-from-google-sheet#install-the-data-entry-bot","Install the data entry bot",[552],"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. Once installed, click 'Start'. axiom.ai will guide you through the steps you need to configure in the app.",{"id":565,"title":566,"titles":567,"content":568,"level":15},"\u002Fguides\u002Fdata-input-from-google-sheet#configure-your-data-entry-bot-in-just-a-few-steps","Configure your data entry bot in just a few steps",[552],"We've provided a set of example steps within Step 2.0 - Loop through data. You can further customize this bot by adding additional steps within this loop to suit your specific needs. 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab with the data to be input.2.0 Loop through data2.1 Enter textSelect: An input field to enter data into.Text: Click Insert Data, select [google-sheet-data].2.2 Enter textSelect: An input field to enter data into.Text: Click Insert Data, select [google-sheet-data].2.3 Click elementSelect: The submit form button.2.4 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created for links.First row: Set to 1.Last row: Set to 1.",{"id":570,"title":571,"titles":572,"content":573,"level":15},"\u002Fguides\u002Fdata-input-from-google-sheet#run-your-data-entry-bot","Run your data entry bot",[552],"We suggest running a test first; watch the bot as it inputs data into the form, then stop the bot after a few loops.",{"id":575,"title":33,"titles":576,"content":577,"level":15},"\u002Fguides\u002Fdata-input-from-google-sheet#customize-your-template",[552],"Like all axiom.ai templates, you can use our no-code bot builder to customize any bot according to your requirements.",{"id":579,"title":38,"titles":580,"content":581,"level":15},"\u002Fguides\u002Fdata-input-from-google-sheet#troubleshooting",[552],"We recommend you watch the video to troubleshoot. Element not found?\nTry reselecting or using custom selectors.Data entered into the wrong input?\nAdd wait steps between inputs. We offer excellent customer support. If you need help, get in touch.\nTo learn more, read this full in-depth guide on automating data entry from a google sheet.",{"id":583,"title":584,"titles":585,"content":586,"level":9},"\u002Fguides\u002Fdate-input","How to automate date inputs with the Date and time step",[],"Learn how to automatically retrieve the date and time, and use this within your automations for form filling, and data output. 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.",{"id":588,"title":589,"titles":590,"content":591,"level":15},"\u002Fguides\u002Fdate-input#getting-a-date-and-time","Getting a date and time",[584],"The Date and time step can be used to get a date. This has various options to get a timestamp, such as: Current - the current date and time.Custom - various options for the date to return a date relative to the current date, such as in the past or future.Reformat existing - reformat a date and time passed into the step, useful when using a date from a Google Sheet. 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.",{"id":593,"title":594,"titles":595,"content":596,"level":15},"\u002Fguides\u002Fdate-input#using-the-timestamp","Using the timestamp",[584],"The \"Date and time\" step will return a 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: Enter text step - to input into forms.Write to a Google Sheet step - to write to your Google Sheet, to keep track of when the data was created, for example.Download file step - to add the date into your file or folder name.Send an email - to add the date into your email body. For automating a date picker, see the Date picker step.",{"id":598,"title":599,"titles":600,"content":601,"level":15},"\u002Fguides\u002Fdate-input#see-also","See also",[584],"Passing data between stepsGetting the date and time with JavaScript",{"id":603,"title":604,"titles":605,"content":606,"level":9},"\u002Fguides\u002Fdiscord","How to automate posting to Discord using an axiom.ai automation",[],"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. 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. Note, webhooks are only available within channels inside of Discord servers.",{"id":608,"title":48,"titles":609,"content":610,"level":15},"\u002Fguides\u002Fdiscord#getting-started",[604],"To send data to Discord, you'll need the following: Server - You'll need to have a server set up.Channel - You'll need to have a channel set up.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. If you have any issues obtaining the webhook URL from Discord, contact Discord support.",{"id":612,"title":613,"titles":614,"content":615,"level":15},"\u002Fguides\u002Fdiscord#post-a-discord-message-with-an-axiomai-automation","Post a Discord message with an axiom.ai automation",[604],"To send a message to a channel within your Discord server, you'll need to use the Trigger webhook step. You'll need the webhook URL from Discord detailed in the getting started section. The payload that Discord is expecting can be found below and can be modified to your requirements: {\n    \"content\": \"\u003CYOUR_MESSAGE>\",\n    \"username\": \"Axiom bot\",\n    \"avatar_url\": \"\u003CURL>\"\n} Let's break down each part of that payload: 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 passing data between steps tutorial.username - this is optional, give a name to the bot posting your message.avatar_url - this is optional, display an avatar for the bot posting your message. Hit \"Save\" once you are happy with your automation. Below you will find an example of this in action, we've omitted the avatar_url in this instance and used the [custom-data] data token to pass a custom message into the webhook.",{"id":617,"title":79,"titles":618,"content":619,"level":15},"\u002Fguides\u002Fdiscord#testing-your-workflow",[604],"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 Run reports. See common errors for details on common errors and how to resolve them.",{"id":621,"title":84,"titles":622,"content":623,"level":15},"\u002Fguides\u002Fdiscord#wrapping-up",[604],"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 Generate text with ChatGPT step, the possibilities are endless. As with all API based tools, it's worth noting the rate limits that Discord applies to their webhooks - if you are having issues with messages not posting correctly, this is often the first culprit. 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. 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);}",{"id":625,"title":626,"titles":627,"content":628,"level":9},"\u002Fguides\u002Fentering-text-into-search-field","How to automate entering text into search and clicking the result",[],"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. 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. We also have a great data entry template to get you started.",{"id":630,"title":513,"titles":631,"content":632,"level":15},"\u002Fguides\u002Fentering-text-into-search-field#prepare-your-google-sheet",[626],"Create a Google sheet with some test text to run your automation with. Col ACol Balex@testemail.comSurnameclaretestemail.comSurnamesam@testemail.comSurname",{"id":634,"title":518,"titles":635,"content":636,"level":15},"\u002Fguides\u002Fentering-text-into-search-field#start-from-blank-adding-the-following-steps",[626],"In the axiom.ai Chrome extension dashboard, click \"New Automation\" and then select \"Add first step\". Use the step finder to add the steps outlined below. 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created in the Spreadsheet field. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.2.0 Loop through dataLoop through data: Click Insert data, select google-sheet-data.2.1 Go to pageEnter URL: Insert the URL of the website.2.2 Enter textSelect: Click Select, highlight the search field and click to select, finally press Complete.Text: Click Insert data, select google-sheet-data to pass the search term from the sheet. Select column A in the preview.2.3 Press key(s)Key: Press Record, then click Return, to submit the search.2.4 Click elementSelect: Click Select, highlight the search result, and press Complete.2.5 Delete row from Google SheetAutomatically removes the processed row to avoid duplicate scrapes in the next loop.",{"id":638,"title":543,"titles":639,"content":640,"level":15},"\u002Fguides\u002Fentering-text-into-search-field#continue-adding-your-steps-as-needed",[626],"Now just use the step finder to continue adding steps and complete your search bot as required.",{"id":642,"title":84,"titles":643,"content":644,"level":15},"\u002Fguides\u002Fentering-text-into-search-field#wrapping-up",[626],"You can quickly scaffold a bot to 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 steps to fully customize the bot to the use case",{"id":646,"title":647,"titles":648,"content":649,"level":9},"\u002Fguides\u002Ferror-reporting-via-webhook","How to set up custom error reporting with webhooks and enriched context",[],"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. 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.",{"id":651,"title":652,"titles":653,"content":654,"level":15},"\u002Fguides\u002Ferror-reporting-via-webhook#how-to-set-up-webhook-or-email-notifications","How to set up webhook or email notifications",[647],"To configure notifications for your automation: Inside the automation editor, click **Settings**.Under **Run options**, click **Notifications**.Select **When to notify**, for example:\nOn errorOn successOn warningsChoose **How to notify**:\nWebhookEmailEnter the **webhook URL** or one or more **email addresses**. By default, notifications include the run status and basic error logs. While useful, this information is often too limited when debugging more complex automations.",{"id":656,"title":657,"titles":658,"content":659,"level":15},"\u002Fguides\u002Ferror-reporting-via-webhook#how-to-enrich-your-error-message-with-data","How to enrich your error message with data",[647],"You can enrich error messages by attaching contextual data from your automation. Using the step finder, search for and add the Add error metadata step. Place this step immediately after the step you want to monitor. Insert the **Add error metadata** step into your automation.In the **Message** field, click **Insert data**.Select tokens from any step that appears before the **Add error metadata** step.\nFor example, if you are manipulating scraped data with a **Split** step, you can include the output from that step.Combine tokens and text to construct a clear, descriptive error message that explains what data was being processed at the time. 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.",{"id":661,"title":662,"titles":663,"content":664,"level":15},"\u002Fguides\u002Ferror-reporting-via-webhook#how-to-handle-runtime-errors-with-different-actions","How to handle runtime errors with different actions",[647],"In some cases, you may want your automation to take a different set of actions when an error occurs instead of failing completely. This can be done using the Try catch 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.",{"id":666,"title":667,"titles":668,"content":669,"level":15},"\u002Fguides\u002Ferror-reporting-via-webhook#how-to-ignore-errors-completely","How to ignore errors completely",[647],"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.",{"id":671,"title":672,"titles":673,"content":674,"level":15},"\u002Fguides\u002Ferror-reporting-via-webhook#major-update-session-recording-and-breakpoints","Major update: session recording and breakpoints",[647],"We’re working on a major update to axiom.ai that introduces session recording and breakpoints. 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. 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. Session recording will be available on higher tier plans and will be optional. For privacy, sensitive data will be automatically blurred in recordings.",{"id":676,"title":84,"titles":677,"content":678,"level":15},"\u002Fguides\u002Ferror-reporting-via-webhook#wrapping-up",[647],"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.",{"id":680,"title":681,"titles":682,"content":683,"level":9},"\u002Fguides\u002Fextract-emails","How to extract emails from a webpage",[],"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. 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.",{"id":685,"title":48,"titles":686,"content":687,"level":15},"\u002Fguides\u002Fextract-emails#getting-started",[681],"To get started, create an a new automation within axiom.ai.",{"id":689,"title":690,"titles":691,"content":692,"level":15},"\u002Fguides\u002Fextract-emails#extracting-email-addresses","Extracting email addresses",[681],"In order to extract email addresses from a single page, follow the steps below: Add a Go to page step to your automation, input the website that you would like to extract email addresses from.Add a Write Javascript step, include the code below to extract the email addresses. Select the variant that works for your needs.Add a Write to a Google Sheet step and write the code-data data token to your Google Sheet. To use this method to extract email addresses from multiple pages, follow the steps below: Add a Read data from a Google Sheet step, this sheet should contain a list of URLs to visit. See How to extract links and write to a Google Sheet for more details on how to do this.Add a Loop through data step, use the google-sheet-data token to loop through the list of URLs.Inside the loop, add the steps from the section above.",{"id":694,"title":695,"titles":696,"content":697,"level":61},"\u002Fguides\u002Fextract-emails#scripts","Scripts",[681,690],"Retrieve all email addresses: 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} Retrieve all email addresses, remove duplicates: 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} Retrieve all email addresses that match a domain: 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}",{"id":699,"title":79,"titles":700,"content":701,"level":15},"\u002Fguides\u002Fextract-emails#testing-your-workflow",[681],"Click \"Run\" on your automation, observe the builder for any errors (see Common Errors for more details) and your Google Sheet for changes. Alternatively, if you are a developer, this code can be copied into the Chrome Devtools console for testing outside of your automation.",{"id":703,"title":84,"titles":704,"content":705,"level":15},"\u002Fguides\u002Fextract-emails#wrapping-up",[681],"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 community. 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}",{"id":707,"title":708,"titles":709,"content":710,"level":9},"\u002Fguides\u002Fgithub","How to automate Github using an axiom.ai automation",[],"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. 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. Github offers many features around the use of their API and webhooks, for this guide, we will be concentrating on webhooks.",{"id":712,"title":48,"titles":713,"content":714,"level":15},"\u002Fguides\u002Fgithub#getting-started",[708],"To get started you will need to have the following prepared: A Github accountA Github repositoryAn axiom.ai accountAn axiom.ai subscription1Your axiom.ai API - API Documentation 1 Subscription is required to use the \"Receive data from another app\" step",{"id":716,"title":717,"titles":718,"content":719,"level":15},"\u002Fguides\u002Fgithub#triggering-an-automated-based-on-github-repository-event","Triggering an automated based on Github repository event",[708],"Github offers the ability to send a webhook when an event occurs within a repository. This defaults to push events, but you can configure this to notify you of all events, or specific events. To create a new webhook, follow the steps below: Open your repository.Navigate to \"Settings\".Navigate to \"Webhooks\".Click \"Add webhook\". To configure your new webhook, use the following settings: 1. Payload URL\nSet to the axiom.ai endpoint. This will include your automation name and API key:https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger?key=\u003CKEY>&name=\u003CNAME>2. Content type\nSet to application\u002Fjson.3. Events\nConfigure the webhook events based on your needs. If your repo has high activity, consider axiom.ai's rate limits.4. Save your work\nMake sure to save the webhook configuration before exiting. 2 The automation name should be encoded, for example \"Hello world\" → \"Hello+world\". Learn more at w3schools. Once the webhook has been set up, you'll need to add a Receive data from another app 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. 💡 Grabbing a sample of the payload would allow you to create 'test data' within this step",{"id":721,"title":79,"titles":722,"content":723,"level":15},"\u002Fguides\u002Fgithub#testing-your-workflow",[708],"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 Run reports to ensure that the automation has run. Review any errors and make changes as required. If you experience issues, see common errors for common resolutions.",{"id":725,"title":84,"titles":726,"content":727,"level":61},"\u002Fguides\u002Fgithub#wrapping-up",[708,79],"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 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. We'd love to hear about what you do with this, let us know over in our community 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.",{"id":729,"title":730,"titles":731,"content":732,"level":9},"\u002Fguides\u002Fgmail-mail-merge","How to mail merge with Gmail using google sheets",[],"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. 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 \"Compose\" form with email, subject, and body, and clicks send. After sending, it deletes the processed row and repeats the process with subsequent rows.",{"id":734,"title":94,"titles":735,"content":736,"level":15},"\u002Fguides\u002Fgmail-mail-merge#get-started-set-up-your-google-sheet",[730],"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 \"Gmail Mailer\". Add some content to test with email addresses, name, subject, body etc",{"id":738,"title":739,"titles":740,"content":741,"level":15},"\u002Fguides\u002Fgmail-mail-merge#install-the-gmail-bulk-sender-bot","Install the Gmail bulk sender bot",[730],"To install this Gmail 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":743,"title":744,"titles":745,"content":746,"level":15},"\u002Fguides\u002Fgmail-mail-merge#configure-your-gmail-bulk-sender-bot","Configure your Gmail bulk sender bot",[730],"Step 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the email information in it.Step 2.0 Go to page: mail.google.com\u002Fmail\u002Fu\u002F0\u002F#inbox^Step 3.0 Loop through dataStep 3.1 Wait: For compose to open^Step 3.2 Enter text: EmailText: Click 'Insert data', select [google-sheet-data].Step 3.3 Press key(s): Tab to Subject^Step 3.4 Enter text: SubjectText: Click 'Insert data', select [google-sheet-data].Step 3.5 – 3.6^Step 3.7 Enter text: BodyText: Click 'Insert data', select [google-sheet-data].Step 3.8 – 3.11^Step 3.12 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the emails in it.^ Preconfigured",{"id":748,"title":749,"titles":750,"content":751,"level":15},"\u002Fguides\u002Fgmail-mail-merge#run-your-gmail-bulk-sender-bot","Run your Gmail bulk sender bot",[730],"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 add steps to login.",{"id":753,"title":33,"titles":754,"content":755,"level":15},"\u002Fguides\u002Fgmail-mail-merge#customize-your-template",[730],"Like all Axiom templates, you can use our no-code bot builder to customize any bot according to your requirements",{"id":757,"title":38,"titles":758,"content":759,"level":15},"\u002Fguides\u002Fgmail-mail-merge#troubleshooting",[730],"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 add steps to login. Email not added?\nIn Step 3.2 – Enter text: Email, check the cursor location. By default, it should be in the Email input field.Tab not working?\nIn Step 3.3 – Press Key(s): Tab to Subject, make sure the step includes pressing Return to submit the email address, followed by Tab to move to the Subject field.Subject text not added?\nIn Step 3.4 – Enter text: Subject, confirm that you clicked Insert data and selected [google-sheet-data].Body entered into subject?\nIn Step 3.7 – Enter text: Body, check Step 3.6 to ensure the cursor is correctly placed before the body text is entered.Send key not clicked?\nIn Step 3.9 – Press Key(s): Click send, re-record the keystroke sequence and test again.Bot out of sync?\nIn Step 3.10 – Wait: For email to send, try extending the wait time to give Gmail more time to process.Compose button not found or visible?\nIn Step 3.11 – Click element: Open new Compose window, reselect the compose button.\nIf it's not visible, check that the Gmail sidebar is toggled open. We offer excellent customer support. If you need help, get in touch.\nTo learn more read this full in-depth guide on how to send an email blast using  Gmail.",{"id":761,"title":762,"titles":763,"content":764,"level":9},"\u002Fguides\u002Fgoogle-apps-script","How to use Google Apps Script to trigger an automation",[],"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. 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 API key. 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 Google Sheets that can be used to fetch, write, and edit Google Sheets data.",{"id":766,"title":48,"titles":767,"content":50,"level":15},"\u002Fguides\u002Fgoogle-apps-script#getting-started",[762],{"id":769,"title":770,"titles":771,"content":772,"level":15},"\u002Fguides\u002Fgoogle-apps-script#trigger-an-axiomai-automation-using-google-app-scripts","Trigger an axiom.ai automation using Google App Scripts",[762],"Learn how to get started with triggering your axiom.ai automation with a Google App Script.",{"id":774,"title":775,"titles":776,"content":777,"level":61},"\u002Fguides\u002Fgoogle-apps-script#set-your-axiomai-automation","Set your axiom.ai automation",[762,770],"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. Receive data from another appGo to page: Insert the Google search URLEnter text: Select the search field, then click insert data and select webhook-data to pass data from the sheet, select column 'A' in the data preview.",{"id":779,"title":780,"titles":781,"content":782,"level":61},"\u002Fguides\u002Fgoogle-apps-script#create-an-api-call-using-google-apps-script","Create an API call using Google Apps Script",[762,770],"First, create a new Google Sheet by entering 'Sheet.new' into a blank browser tab. Create a new Google Sheet, add some text into column A.Click on Extensions > Apps Script to open the Apps Script window.Copy the code example from this page into the Apps Script window.Insert your API key in the input noted with \"insert key here\".Insert the name of the automation you wish to trigger where the text says \"insert automation name here\". 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}",{"id":784,"title":785,"titles":786,"content":787,"level":61},"\u002Fguides\u002Fgoogle-apps-script#trigger-based-on-edits-to-your-sheet","Trigger based on edits to your sheet",[762,770],"Google Apps Script offers event-driven triggers that can be set up to end data to your axiom.ai automation. Click \"Triggers\" in the Google Apps Script sidebar.Click \"Add Trigger\" to create a new trigger.Set the function to run to sendDataToAxiomAi and the event type to \"On edit\".Click \"Save\". 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.",{"id":789,"title":79,"titles":790,"content":791,"level":15},"\u002Fguides\u002Fgoogle-apps-script#testing-your-workflow",[762],"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. Click the 'disc' icon to save your API call script.Click on the 'play' icon to start your script.",{"id":793,"title":84,"titles":794,"content":795,"level":15},"\u002Fguides\u002Fgoogle-apps-script#wrapping-up",[762],"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. 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);}",{"id":797,"title":798,"titles":799,"content":800,"level":9},"\u002Fguides\u002Fgoogle-sheets-tweeter","How to automate posting on X (formerly twitter) using Google Sheets",[],"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. 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 \"post\". It then deletes the processed post from the sheet, preparing for the next entry.",{"id":802,"title":12,"titles":803,"content":804,"level":15},"\u002Fguides\u002Fgoogle-sheets-tweeter#get-started-create-your-google-sheet",[798],"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 \"X post\" and set up a tab called \"Post\". Add some post data.",{"id":806,"title":807,"titles":808,"content":809,"level":15},"\u002Fguides\u002Fgoogle-sheets-tweeter#install-the-twitterx-posting-bot","Install the Twitter(x) posting bot",[798],"To install this \"Twitter(x)\" posting 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. Once installed, click \"Start'\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":811,"title":812,"titles":813,"content":814,"level":15},"\u002Fguides\u002Fgoogle-sheets-tweeter#configure-your-twitterx-posting-bot-in-minutes","Configure your Twitter(x) posting bot in minutes",[798],"Step 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab called 'Post'.Step 2.0 Loop through dataStep 2.1 Go to page: Twitter (X) Compose URL^ PreconfiguredStep 2.2 Enter text: TweetSelect: ^ PreconfiguredText: Click Insert Data, select [google-sheet-data], and choose the column with the post content.Step 2.3 Upload a file: ImageFile Input Field: ^ PreconfiguredFile Path: Click Insert Data, select [google-sheet-data], and choose the column with the image path.Step 2.4 Click element: PostSelect: ^ PreconfiguredStep 2.5 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created for posts.First row: Set to 1.Last row: Set to 1.",{"id":816,"title":817,"titles":818,"content":819,"level":15},"\u002Fguides\u002Fgoogle-sheets-tweeter#run-your-twitterx-posting-automation","Run your Twitter(x) posting automation",[798],"We suggest running a test first, disable Step 2.4 to prevent the bot sending a post.",{"id":821,"title":33,"titles":822,"content":35,"level":15},"\u002Fguides\u002Fgoogle-sheets-tweeter#customize-your-template",[798],{"id":824,"title":38,"titles":825,"content":826,"level":15},"\u002Fguides\u002Fgoogle-sheets-tweeter#troubleshooting",[798],"We recommend you watch the video to troubleshoot. Loads incorrect page?\nIn Step 2.1 – Go to page: Twitter (X) Compose URL, check the URL is set to https:\u002F\u002Ftwitter.com\u002Fcompose\u002Ftweet.No message input?\nIn Step 2.2 – Enter text: Tweet, reselect the input field in the post form.File does not upload?\nIn Step 2.3 – Upload a file: Image, check your computer folder permissions.Post button not clicked?\nIn Step 2.4 – Click element: Post, reselect the post button.Row not removed?\nIn Step 2.5 – Delete rows from a Google Sheet, make sure the correct sheet and row range are selected. We offer excellent customer support. If you need help, get in touch. Read this if you would like to learn more about posting to Social media with a bot.",{"id":828,"title":829,"titles":830,"content":831,"level":9},"\u002Fguides\u002Fhandling-dialogs","How to automate dialogs",[],"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. 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.",{"id":833,"title":834,"titles":835,"content":836,"level":15},"\u002Fguides\u002Fhandling-dialogs#standard-alerts","Standard alerts",[829],"By default, axiom.ai will automatically dismiss most dialogs that are created using the standard 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: page.on('dialog', async dialog => {\n    await dialog.dismiss();\n})",{"id":838,"title":839,"titles":840,"content":841,"level":15},"\u002Fguides\u002Fhandling-dialogs#non-standard-dialogs","Non-standard dialogs",[829],"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. 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 Best Custom CSS Selectors for Web Scraping. 💡 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. Once you have this selector, this can be added into a Click element 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 Custom CSS selectors documentation. This step should be added in the location where you most likely expect the dialog to display. 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);}",{"id":843,"title":844,"titles":845,"content":846,"level":9},"\u002Fguides\u002Fhow-to-automate-apollo-crm","How to automate Apollo.io CRM",[],"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. 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 \"Save\", and then clicks \"Add to Lists.\" Finally, the bot enters the name of the list and clicks  \"Save\" again. You can configure the bot to loop through as many pages as you want, adding more and more prospects to your lists.",{"id":848,"title":849,"titles":850,"content":851,"level":15},"\u002Fguides\u002Fhow-to-automate-apollo-crm#get-started-set-up-you-apolloio-search-page","Get started: Set up you Apollo.io search page",[844],"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.",{"id":853,"title":854,"titles":855,"content":856,"level":15},"\u002Fguides\u002Fhow-to-automate-apollo-crm#install-the-apolloio-bot","Install the Apollo.io bot",[844],"To install this Apollo.io 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":858,"title":859,"titles":860,"content":861,"level":15},"\u002Fguides\u002Fhow-to-automate-apollo-crm#configure-your-apolloio-bot-in-three-easy-steps","Configure your Apollo.io bot in three easy steps",[844],"Step 1.0 Go to page: SearchEnter URL: Insert Apollo.io search URL.2.0 – 4.0 ^5.0 Select listText: Add the list name.6.0 – 7.0 ^9.0 Jump to another step: RepeatMaximum cycles: Set the number of loops you wish to make.^ Preconfigured",{"id":863,"title":864,"titles":865,"content":866,"level":15},"\u002Fguides\u002Fhow-to-automate-apollo-crm#run-your-apolloio-bot","Run your Apollo.io bot",[844],"To test this bot, we recommend limiting the loops to a maximum of 3. This can be done in Step 9.0, \"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.",{"id":868,"title":869,"titles":870,"content":35,"level":15},"\u002Fguides\u002Fhow-to-automate-apollo-crm#customize-your-apolloio-template","Customize your Apollo.io template",[844],{"id":872,"title":38,"titles":873,"content":874,"level":15},"\u002Fguides\u002Fhow-to-automate-apollo-crm#troubleshooting",[844],"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 add steps to login. Not loading a filtered search?\nMake sure filters are set in Apollo, then copy the full search URL into the Go to page step.Not selecting people?\nIn Step 2.0 – Click element, try reselecting the button using the custom selector .finder-select-multiple-entities-button. See howNot clicking \"Select this page\"?\nIn Step 3.0 – Click element, use the 'Element text' option to target the exact \"Select this page\" button.Save button not working?\nIn Step 4.0 – Click element, reselect the \"Save\" button when people are selected, or try using 'Element text'.Select list not opening?\nIn Step 5.0 – Select list, try reselecting the dropdown using this custom selector: div[role=\"dialog\"] .zp-select-indicators.Not saving to list?\nIn Step 6.0 – Press key(s), re-record the Enter keystroke.Bot skips before saving is complete?\nIn Step 7.0 – Wait, increase the wait time to allow saving to finish.Next button not working?\nIn Step 8.0 – Click element, reselect the \"Next\" button at the bottom of the table.Jumping to wrong step?\nIn Step 9.0 – Jump to another step, check that it jumps to Step 2.0. We offer excellent customer support. If you need help, get in touch.",{"id":876,"title":877,"titles":878,"content":879,"level":9},"\u002Fguides\u002Fhow-to-automate-file-downloads","How to automate file downloads",[],"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. 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.",{"id":881,"title":882,"titles":883,"content":884,"level":15},"\u002Fguides\u002Fhow-to-automate-file-downloads#install-the-file-download-bot","Install the File download bot",[877],"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. Once installed, click 'Start'. axiom.ai will guide you through the steps you need to configure in the app.",{"id":886,"title":887,"titles":888,"content":889,"level":15},"\u002Fguides\u002Fhow-to-automate-file-downloads#configure-your-file-download-bot-in-a-minute","Configure your File download bot in a minute",[877],"Step 1.0 Go to pageEnter URL: Click Insert Data, select google-sheet-data, and choose the column containing the links.Step 2.0 Download filesSelect: Point and click to select the files you wish to download.Folder: Set a folder to download to.File name: Optional.Force download: Optional.",{"id":891,"title":892,"titles":893,"content":894,"level":15},"\u002Fguides\u002Fhow-to-automate-file-downloads#run-your-file-download-bot","Run your File download bot",[877],"We suggest running a test first, stopping the bot after a few downloads and checking the files.",{"id":896,"title":33,"titles":897,"content":898,"level":15},"\u002Fguides\u002Fhow-to-automate-file-downloads#customize-your-template",[877],"Like all Axiom templates, 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 download to Google Drive step. We also have steps to automate screenshots.",{"id":900,"title":38,"titles":901,"content":902,"level":15},"\u002Fguides\u002Fhow-to-automate-file-downloads#troubleshooting",[877],"We recommend you watch the video to troubleshoot. Selectors fail to find content?\nTry re-selecting or using custom selectors.Files do not download?\nCheck the folder permission on your computer.Does the file open in a window?\nThis is default browser behavior. You can’t override it, but there is a workaround — create a Chrome Profile and change the default download setting for the profile. We offer excellent customer support. If you need help, get in touch.\nLearn how to create a bot from scratch to download files from a website by clicking here.",{"id":904,"title":905,"titles":906,"content":907,"level":9},"\u002Fguides\u002Fhow-to-clear-text-from-a-field","How to clear text from an Input Field",[],"Learn how to clear text from an Input Field using the Press key(s) step. When automating form filling, you may encounter input fields that are already populated with default values. The \"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. 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 \"Click element\" and \"Press key(s)\" steps.",{"id":909,"title":910,"titles":911,"content":912,"level":15},"\u002Fguides\u002Fhow-to-clear-text-from-a-field#insert-the-following-steps-into-your-automation","Insert the following steps into your automation",[905],"Assuming you have a bot set up in axiom.ai. insert the following steps before the \"Enter text\" step you wish to enter a value with. Using the step finder add the following steps.",{"id":914,"title":915,"titles":916,"content":917,"level":15},"\u002Fguides\u002Fhow-to-clear-text-from-a-field#clear-an-input-before-entering-new-text","Clear an input before entering new text",[905],"To clear an input field before using an \"Enter text\" step, insert the following two steps directly beforehand: Step 1.0 - Click element: Focus inputSelect: Click \"Select\", highlight the input field you wish to clear, then press \"Complete\".Step 2.0 - Press key(s): Clear valueKey: Press \"Record\", tap the right arrow key repeatedly (→→→→→→→→→→) to move the cursor to the end, then press delete (⌦⌦⌦⌦⌦⌦⌦⌦⌦). Click \"Stop recording\" when done. 💡 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 useful shortcuts to discover. That's it! Assuming your \"Enter Text\" step is next, the input field will now be cleared, and the new data will be entered without any issues.",{"id":919,"title":84,"titles":920,"content":921,"level":15},"\u002Fguides\u002Fhow-to-clear-text-from-a-field#wrapping-up",[905],"This is a simple way to clear prepopulated text in form automation. You can empty an input field by employing the \"Click element\" and \"Press keys(s)\" steps. This method enhances the reliability of your form automation tasks, helping you achieve accurate results with minimal effort.",{"id":923,"title":924,"titles":925,"content":926,"level":9},"\u002Fguides\u002Fhow-to-combine-variables","How to combine Tokens (variables) into one",[],"Learn how to combine tokens variables from multiple steps into a single output in axiom.ai using append, loop, or JavaScript steps. 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. As ever, there is more than one way! That's why axiom.ai is so powerful.",{"id":928,"title":929,"titles":930,"content":931,"level":15},"\u002Fguides\u002Fhow-to-combine-variables#what-are-tokens-in-axiomai","What are tokens in axiom.ai?",[924],"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.",{"id":933,"title":934,"titles":935,"content":936,"level":15},"\u002Fguides\u002Fhow-to-combine-variables#method-one-the-append-or-merge-data-step","Method one: the Append or merge data step",[924],"The 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.",{"id":938,"title":939,"titles":940,"content":941,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#how-to-use-the-append-or-merge-data-step","How to use the Append or merge data step",[924,934],"Step 1.0 Append or merge dataData A — Select the first data set (e.g., a scraped ticket URL).Data B — Select the second data set to combine (e.g., ChatGPT output or a timestamp).Append mode — Choose how to combine the data:\n\"Horizontally\" joins values side-by-side\"Vertically\" stacks values top-to-bottom",{"id":943,"title":944,"titles":945,"content":946,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#tip","Tip",[924,934],"💡 You can chain multiple Append or merge data steps if you need to combine more than two values.",{"id":948,"title":949,"titles":950,"content":951,"level":15},"\u002Fguides\u002Fhow-to-combine-variables#method-two-the-loop-step","Method two: The loop step",[924],"The Loop through data step is most commonly used to repeat actions—like scraping a list of URLs.\nBut it has a powerful hidden feature: it can be used to combine data from multiple steps even when you’re not looping. Any steps that output data, when placed inside a Loop through data block, will have their data combined into a single output token.",{"id":953,"title":954,"titles":955,"content":956,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#how-to-use-this-trick","How to use this trick",[924,949],"Step 1.0 Loop through dataLoop through data — Leave this empty or toggle it off.Purpose — You are not looping; you're using the loop as a container to combine outputs.Step 1.1 Step that outputs dataAdd any step that returns data (e.g. Get data from current page).Step 1.2 Another step that outputs dataAdd another step that returns data (e.g. Date and time).Outside the loopUse the token from the Loop through data step.This token contains combined data from all steps inside the loop, appended horizontally.",{"id":958,"title":959,"titles":960,"content":961,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#when-to-use-this","When to use this",[924,949],"This trick is useful when merging data from multiple steps to write into a Google Sheet.",{"id":963,"title":944,"titles":964,"content":965,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#tip-1",[924,949],"⚠️ The combined data is only available outside the loop.",{"id":967,"title":968,"titles":969,"content":970,"level":15},"\u002Fguides\u002Fhow-to-combine-variables#method-three-the-javascript-step","Method three: The JavaScript step",[924],"If you're comfortable with code, the JavaScript step is a powerful way to manipulate and combine data however you like. You can use it to join variables, restructure arrays, clean data, or return a custom output—all inside one step.",{"id":972,"title":973,"titles":974,"content":975,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#how-to-use-it","How to use it",[924,968],"Step 1.0 JavaScriptAdd step — Open the step finder and insert the JavaScript step.Declare tokens — Use the Insert Data menu to select tokens and assign them to variables.Write your logic — Combine, transform, or filter the data however you like.Return output — Use return to output a single value or an array of values.",{"id":977,"title":978,"titles":979,"content":980,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#example","Example",[924,968],"var links = [custom-data].flat();\nvar dates = [custom-data_1].flat();\n\nreturn [[...links, ...dates]];",{"id":982,"title":944,"titles":983,"content":984,"level":61},"\u002Fguides\u002Fhow-to-combine-variables#tip-2",[924,968],"You can return a single value or an array.The result can be used as input for steps like \"Write to a Google Sheet\".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.",{"id":986,"title":987,"titles":988,"content":989,"level":15},"\u002Fguides\u002Fhow-to-combine-variables#wrapping-up-axiomai-is-a-flexible-tool","Wrapping up: axiom.ai is a flexible tool",[924],"We designed axiom.ai to be flexible, which means there is often more than one way to solve a problem. If you only need to combine two tokens, use the Append or merge data stepIf you want to output multiple values into a single row, use the Loop through data stepIf you need full control over how data is combined or transformed, use the JavaScript step 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. 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);}",{"id":991,"title":992,"titles":993,"content":994,"level":9},"\u002Fguides\u002Fhow-to-dm-on-instagram","How to automate Instagram DM's",[],"A Step by step guide how to contruct a bot to autoamte sending direct messages on Instagram. 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 one-click setup template you can use instead of this guide. Create a blank Google SheetCreate a Google Sheet, in Col A add links to profiles and in Col B insert your DM.ABhttps:\u002F\u002Fwww.instagram.com\u002Falfiesmith81\u002FMy custom message 1https:\u002F\u002Fwww.instagram.com\u002Faxiom.ai\u002FMy custom message 2Start from blank, adding the following stepsIn the axiom.ai Chrome extension, click \"New Automation\" and then select \"Start from Blank\". Use the step finder to add the steps outlined below.Step 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.First cell: Start from a specified column and row, e.g., \"A1\".Last cell: End at a specified column and row, e.g., \"AB1\".Step 2.0 Loop through dataLoop through data: Click Insert data, select google-sheet-data.Step 2.1 Go to page: Instagram profileEnter URL: Click Insert data, select the column with Instagram profile links.Step 2.2 Get data from bot's current pageSelect: Use the Selector Tool to select the header containing the Message button.Step 2.3 If condition: Check for Message buttonData to check: Select [scrape-data].Condition to check: Insert text \"Message\" (localise if needed).Reverse condition: Set to \"Run steps if condition is true\".Step 2.3.1 Click element: MessageSelect: Highlight the Message button.Click: Set to Custom, enable \"Use element text instead of HTML\", click \"Complete\".Step 2.3.2 Wait: For DM dialog to appear ^Step 2.3.3 Click element: Dismiss dialogSelect: Highlight the ‘Not now’ button.Click: Set to Custom, enable \"Use element text instead of HTML\", click \"Complete\".Step 2.3.4 Wait: For dialog to close ^Step 2.3.5 Enter text: DM messageText: Click Insert data, select the message column from google-sheet-data (usually column B).Step 2.3.6 Press key(s): Send DMRecord: Press \"Return\", then click \"Stop recording\".Step 2.4 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.First row to delete: Leave set to 1.Last row to delete: Leave set to 1.💡 For testing, set \"Last cell\" to \"AB1\" to send a single DM. To send more, increase to \"AB10\" etc. Instagram has limits — avoid getting blocked.Wrapping upBy 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 Instagram template that can be set up with a single click.",{"id":996,"title":997,"titles":998,"content":999,"level":9},"\u002Fguides\u002Fhow-to-loop-through-data-in-cells","How to loop through data in cells",[],"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. 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. Let’s dive in.",{"id":1001,"title":1002,"titles":1003,"content":1004,"level":15},"\u002Fguides\u002Fhow-to-loop-through-data-in-cells#how-to-set-up-your-data","How to set up your data",[997],"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. For example, in column C you might store sizes like this:",{"id":1006,"title":1007,"titles":1008,"content":1009,"level":15},"\u002Fguides\u002Fhow-to-loop-through-data-in-cells#when-to-use-this-method","When to use this method",[997],"Use this approach when: You need to tick multiple checkboxes.You need to select multiple dropdown options.You are automating product variants, tags, permissions, or categories.",{"id":1011,"title":1012,"titles":1013,"content":1014,"level":15},"\u002Fguides\u002Fhow-to-loop-through-data-in-cells#what-steps-we-will-use","What steps we will use",[997],"First, we import the source data using the Read data from Google Sheet step. This gives us access to all product values stored in the sheet. Next, we use the Loop through data step to process each row individually. Within that loop, we add a Split by character step. This takes a single cell containing multiple values and splits it using a delimiter, turning the values into an array. Because the split data is returned horizontally, we then use the Swap rows and columns step to convert it into a vertical list. Finally, we use another Loop step to iterate through the transposed values one by one. This allows each option to be selected individually in the target dropdown or checkbox group.",{"id":1016,"title":1017,"titles":1018,"content":1019,"level":15},"\u002Fguides\u002Fhow-to-loop-through-data-in-cells#how-to-structure-the-steps","How to structure the steps",[997],"Below is a simplified outline of the structure: Step 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.First cell: Start from a specified column and row, e.g., \"A1\".Last cell: End at a specified column and row, depending on how many rows you want to process.Step 2.0 Loop through dataLoop through data: Click Insert data, select google-sheet-data.Step 2.1 Split by characterCharacter: Enter your chosen delimiter, for example ,.Data: Click Insert data, select the column that contains your delimited cell values (e.g., sizes column).Step 2.2 Swap rows and columnsData: Click Insert data, select the output from the Split by character step.Step 2.3 Loop through data (nested loop)Loop through data: Click Insert data, select the output from the Swap rows and columns step.Step 2.3.1 Click elementSelect: Highlight the size dropdown.Click: Set to Custom, enable \"Use element text instead of HTML\", click \"insert data\" and select the output from the Swap rows and columns step. Finally click \"Complete\". This allows each value in the cell (for example, each size) to be selected individually.",{"id":1021,"title":84,"titles":1022,"content":1023,"level":15},"\u002Fguides\u002Fhow-to-loop-through-data-in-cells#wrapping-up",[997],"Looping through data inside loops can feel complex at first. The key is setting up your data correctly using a delimiter. Once your data is structured properly, you only need a few steps: SplitTransposeloop From there, you can automate selecting multiple dropdown items, ticking multiple checkboxes, or interacting with repeated UI elements. Master nested loops, and you unlock the ability to automate highly dynamic interfaces.",{"id":1025,"title":1026,"titles":1027,"content":1028,"level":9},"\u002Fguides\u002Fhubspot-sequence-add-contacts","How to automate adding contacts to your Hubspot sequences",[],"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. This guide shows you how to make a bot that reads contact information from a Google Sheet, opens a HubSpot email sequence, and then clicks on \"Email Contacts\" followed by \"Enroll Contacts.\" It then enters the email into the \"Search for Contacts\" input. The bot then selects \"Next\" and finally \"Start Sequence\" before repeating the process in a loop for the next contact. Better still, the bot can be easily adapted to your use case by adding and removing steps.",{"id":1030,"title":1031,"titles":1032,"content":1033,"level":15},"\u002Fguides\u002Fhubspot-sequence-add-contacts#create-a-blank-google-sheet","Create a blank Google Sheet",[1026],"Create a Google Sheet add some contact emails to the sheet. See example below. ABdummycontact@mywork.com---dummycontact1@mywork.com---",{"id":1035,"title":518,"titles":1036,"content":1037,"level":15},"\u002Fguides\u002Fhubspot-sequence-add-contacts#start-from-blank-adding-the-following-steps",[1026],"In the axiom.ai Chrome extension, click \"New Automation\" and then select \"Start from Blank\". Use the step finder to add the steps outlined below. Step 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.First cell: Start from \"A1\".Last cell: End at \"AB1\".Step 2.0 Go to page: Hubspot SequenceEnter URL: Insert the sequence URL you wish to add contacts into.Step 3.0 Loop through dataLoop through data: Click Insert data, select google-sheet-data.Step 3.1 Select list: Enroll contactsSelect: Highlight the “Enroll contacts” dropdown.Text: Add the text \"Email contacts\".Step 3.2 Enter text: Search for contactText: Click Insert data, select the email column from the Google Sheet (column A).Step 3.3 Click element: Tick contactSelect: Highlight and select the checkbox for the top result.Step 3.4 Click element: NextSelect: Highlight the “Next” button and click Complete.Step 3.5 Click element: Start sequenceSelect: Highlight the “Start sequence” button and click Complete.Step 3.6 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.First row to delete: Set to 1.Last row to delete: Set to 1. 💡 Adjust the Last cell value in Step 1.0 (e.g. \"AB50\") to loop through multiple contacts.",{"id":1039,"title":84,"titles":1040,"content":1041,"level":15},"\u002Fguides\u002Fhubspot-sequence-add-contacts#wrapping-up",[1026],"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 browser.",{"id":1043,"title":1044,"titles":1045,"content":1046,"level":9},"\u002Fguides\u002Fifttt","How to trigger axiom.ai automations using IFTTT",[],"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. 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. 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 pricing). Some features of IFTTT may require a subscription.",{"id":1048,"title":48,"titles":1049,"content":1050,"level":15},"\u002Fguides\u002Fifttt#getting-started",[1044],"To get started, you will need the following from the axiom.ai Chrome extension: API key: Your personal API key can be found in the extension dashboard.Automation name: The name of the automation you wish to trigger.Endpoint: The current axiom.ai endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.",{"id":1052,"title":1053,"titles":1054,"content":1055,"level":15},"\u002Fguides\u002Fifttt#trigger-an-axiomai-automation-with-ifttt","Trigger an axiom.ai automation with IFTTT",[1044],"Learn how to trigger an axiom.ai automation from IFTTT by making use of webhooks. Create IFTTT applet: Head to ifttt.com and click \"create\".Trigger: IFTTT offer a wide range of triggers for your automations. For this guide we will use \"Date & Time\" for simplicity.Action(s): To trigger your axiom.ai automation, select \"Webhooks\" as an action.Configure: Configure the \"webhooks\" action. Configure the \"webhooks\" action: URL: The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.Method: Set to POST.Content Type: Set to application\u002Fjson.Request body: This should be set per our API | Triggering an automation documentation.",{"id":1057,"title":1058,"titles":1059,"content":1060,"level":15},"\u002Fguides\u002Fifttt#trigger-an-ifttt-applet-with-an-axiomai-automation","Trigger an IFTTT applet with an axiom.ai automation",[1044],"Learn how to trigger an IFTTT applet from an axiom.ai automation. Create IFTTT applet: Head to ifttt.com and click \"create\".Trigger: Select the \"receive a web request with a JSON payload\" trigger, and set an event name.Action(s): Select the action(s) that you would like your IFTTT flow to take.Save: Once saved, you will then be given a webhook URL, save this for later. Now head over to your axiom.ai automation: Trigger a webhook: Add the \"trigger a webhook\" step to your automation, towards the end of your automation is often best.Set Endpoint: In the \"endpoint\" field, insert the URL from step 4.Define payload: (Optional) If you're sending data to IFTTT, define a JSON payload in the \"payload\" field. Example payload: {\n  \"organisation\": \"axiom.ai\",\n  \"address\": \"123 Coast Road\",\n  \"phone\": \"xxx-xxx-xxxx\"\n}",{"id":1062,"title":79,"titles":1063,"content":1064,"level":15},"\u002Fguides\u002Fifttt#testing-your-workflow",[1044],"To test the triggering of your axiom.ai automation from an IFTTT applet, simply run the flow from IFTTT and then check the run reports 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. To test the triggering of your IFTTT applet, simply click run 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.",{"id":1066,"title":490,"titles":1067,"content":1068,"level":15},"\u002Fguides\u002Fifttt#examples",[1044],"There are plenty of use cases that this can be applied to, below are some examples.",{"id":1070,"title":1071,"titles":1072,"content":1073,"level":61},"\u002Fguides\u002Fifttt#trigger-axiomai-automation-when-an-airtable-database-is-updated","Trigger axiom.ai automation when an Airtable database is updated",[1044,490],"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: Airtable Integrations for more information. Create IFTTT applet: Head to ifttt.com and click \"create\".Trigger: Select the \"Airtable\" trigger.Action(s): Add the \"Webhooks\" action. To configure this action, see Trigger an axiom.ai automation with IFTTT.Test: Add a new entry to your Airtable table, give it a moment, and then check \"run reports\" in your axiom.ai extension. Need to post data to Airtable using Axiom? Check out our guide on how to post data to airtable.",{"id":1075,"title":1076,"titles":1077,"content":1078,"level":61},"\u002Fguides\u002Fifttt#automatically-create-a-new-notion-page-with-ifttt-and-axiomai","Automatically create a new Notion page with IFTTT and axiom.ai",[1044,490],"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. Create IFTTT applet: Head to ifttt.com and click \"create\".Trigger: Select the \"receive a web request with a JSON payload\" trigger, and set an event name.Action(s): Search \"Notion\" and select \"create a page\".Configure: 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.Add a filter code:  To make use of the 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.Set up your Axiom: Add a \"Trigger webhook\" step to your automation to use when sending data to IFTTT.Test: Click \"run\" on your automation with some test data then check the activity within your IFTTT applet to confirm it ran as expected. 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. \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}`) To set up your axiom.ai automation, you'll need to add a trigger webhook step. You'll need to save your IFTTT applet and grab the webhook URL. It should have the following format: 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: {\n  \"organisation\": \"axiom.ai\",\n  \"address\": \"123 Coast Road\",\n  \"phone\": \"xxx-xxx-xxxx\"\n}",{"id":1080,"title":84,"titles":1081,"content":1082,"level":15},"\u002Fguides\u002Fifttt#wrapping-up",[1044],"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. Information correct as of October 2024. Updated to any platform mentioned my change or render this process obsolete. 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}",{"id":1084,"title":1085,"titles":1086,"content":1087,"level":9},"\u002Fguides","Guides",[],"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.",{"id":1089,"title":1090,"titles":1091,"content":1092,"level":9},"\u002Fguides\u002Finstagram-dm-like","How to DM Instagram users and like their newest post",[],"A no-code template that reads a Google Sheet, sends a DM to each Instagram user, and likes their latest post — set it up in minutes with axiom.ai. This one-click template reads a Google Sheet, loops through each row, loads the profile links in the browser, clicks 'Message', and sends the DM. Finally, it likes the user's latest post. To use it, just add a Google Sheet.",{"id":1094,"title":12,"titles":1095,"content":1096,"level":15},"\u002Fguides\u002Finstagram-dm-like#get-started-create-your-google-sheet",[1090],"Create a new Google Sheet with a column of Instagram profile links. Even better — when you run the template, click 'Create new sheet' and we'll set the sheet up for you, complete with some test data.",{"id":1098,"title":1099,"titles":1100,"content":1101,"level":15},"\u002Fguides\u002Finstagram-dm-like#install-the-template","Install the template",[1090],"To install this Instagram DM 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1103,"title":1104,"titles":1105,"content":1106,"level":15},"\u002Fguides\u002Finstagram-dm-like#how-it-works","How it works",[1090],"The bot works by reading your Google Sheet, looping through each row, loading the profile links in the browser, clicking 'Message', and then sending the DM. Finally, it likes the user's latest post. You can control how many DMs to send by setting the first and last rows in the 'Read data from a Google Sheet' step.",{"id":1108,"title":1109,"titles":1110,"content":1111,"level":15},"\u002Fguides\u002Finstagram-dm-like#frequently-asked-questions","Frequently asked questions",[1090],"Can I personalize the DM?\nYes. Click 'Insert data' in the 'DM' step to pass data — such as names — from the Google Sheet into the DM. How many DMs can I send a day?\nFor new accounts, the limit is typically between 20 to 50 DMs per day. More established accounts can send between 100 to 150 DMs daily. Start low and ramp up until you hit the limit. Will my account get blocked?\nIf you exceed the DM limits imposed by Instagram, your account will most likely be suspended. If you continue to repeatedly exceed the limits, your account risks being blocked. Can this tool automate other Instagram tasks?\nYes — it's possible to adapt the template to log in and out of Instagram accounts, although it is not an optimal solution for a large volume of accounts. Can I control the amount of DMs the bot sends?\nIn the 'Read data from a Google Sheet' step, you can specify the first and last rows. For example, set the first row to '2' and the last row to '21' — this sends 20 DMs.",{"id":1113,"title":1114,"titles":1115,"content":1116,"level":9},"\u002Fguides\u002Finstagram-post","How to automate Instagram posts using Google Sheets",[],"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. This \"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 \"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.",{"id":1118,"title":94,"titles":1119,"content":1120,"level":15},"\u002Fguides\u002Finstagram-post#get-started-set-up-your-google-sheet",[1114],"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 \"Instagram posts\".",{"id":1122,"title":1123,"titles":1124,"content":1125,"level":15},"\u002Fguides\u002Finstagram-post#install-the-instagram-post-bot","Install the Instagram post bot",[1114],"To install this Insta 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. Once installed, click 'Start'. axiom.ai will guide you through the steps you need to configure in the app.",{"id":1127,"title":1128,"titles":1129,"content":1130,"level":15},"\u002Fguides\u002Finstagram-post#configure-your-instagram-post-bot-in-four-easy-steps","Configure your Instagram post bot in four easy steps",[1114],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.2.0 Loop through data2.1 Go to page: www.instagram.com ^2.2 Wait ^2.3 Click element: Not Now ^\nCloses pop-up that may appear.2.4 Click element: Create ^2.5 Click element: Post ^2.6 Upload a file: Select from computerFile Path: Click Insert data, select [google-sheet-data].2.7 Click element: Next ^2.8 Click element: Next ^2.9 Enter text: Write a captionText: Click Insert data, select [google-sheet-data].2.10 Click element: Share ^2.11 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.^ Preconfigured",{"id":1132,"title":1133,"titles":1134,"content":1135,"level":15},"\u002Fguides\u002Finstagram-post#run-your-instagram-post-bot","Run your Instagram post bot",[1114],"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 add steps to login. 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 'Upload from Google drive' step.",{"id":1137,"title":33,"titles":1138,"content":35,"level":15},"\u002Fguides\u002Finstagram-post#customize-your-template",[1114],{"id":1140,"title":38,"titles":1141,"content":1142,"level":15},"\u002Fguides\u002Finstagram-post#troubleshooting",[1114],"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 add steps to login. Element not found?\nReselect the element in Steps 2.3, 2.4, 2.5, 2.6, 2.7, 2.9 – Click element.Image does not upload?\nIn Step 2.6 – Upload a file: Select from computer, check your folder permissions and the file size. We offer excellent customer support. If you need help, get in touch.\nTo learn more, read this full in-depth guide on automating posting to Instagram.",{"id":1144,"title":1145,"titles":1146,"content":1147,"level":9},"\u002Fguides\u002Finstagram-scrape-post-links","How to scrape Instagram search for post links",[],"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. This template automates \"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.",{"id":1149,"title":94,"titles":1150,"content":1151,"level":15},"\u002Fguides\u002Finstagram-scrape-post-links#get-started-set-up-your-google-sheet",[1145],"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 \"Instagram search scraper\". Set up two tabs in Google Sheets: one for search terms and another for scraped data.",{"id":1153,"title":1154,"titles":1155,"content":1156,"level":15},"\u002Fguides\u002Finstagram-scrape-post-links#install-the-instagram-search-scraper-bot","Install the Instagram search scraper bot",[1145],"To install this Instagram search scraper 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1158,"title":1159,"titles":1160,"content":1161,"level":15},"\u002Fguides\u002Finstagram-scrape-post-links#configure-your-instagram-search-scraper-in-five-easy-steps","Configure your Instagram search scraper in five easy steps",[1145],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.2.0 Loop through data2.1 Go to pageEnter URL: Click Insert data, select [google-sheet-data], and append to the end of the URL:https:\u002F\u002Fwww.instagram.com\u002Fexplore\u002Fsearch\u002Fkeyword\u002F?q=2.2 Get data from bot's current pagePreconfigured with custom selector:main a[role=\"link\"]2.3 Append or Merge DataData A: Click Insert data, select post URL in [current-url]Data B: Click Insert data, select [scrape-data]2.4 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.2.5 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.",{"id":1163,"title":1164,"titles":1165,"content":1166,"level":15},"\u002Fguides\u002Finstagram-scrape-post-links#run-your-instagram-search-scraper","Run your Instagram search scraper",[1145],"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 add steps to login.",{"id":1168,"title":33,"titles":1169,"content":35,"level":15},"\u002Fguides\u002Finstagram-scrape-post-links#customize-your-template",[1145],{"id":1171,"title":38,"titles":1172,"content":1173,"level":15},"\u002Fguides\u002Finstagram-scrape-post-links#troubleshooting",[1145],"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 add steps to login. Page not loading?\nIn Step 2.1 – Go to page, check if the token is inserted. The URL should look like:https:\u002F\u002Fwww.instagram.com\u002Fexplore\u002Fsearch\u002Fkeyword\u002F?q=[google-sheet-data]No data?\nIn Step 2.2 – Get data from bot's current page, check the custom selector works:main a[role=\"link\"]No data being written?\nIn Step 2.4 – Write data to a Google Sheet, ensure [appended-data] is selected under \"Data\". We offer excellent customer support. If you need help, get in touch.",{"id":1175,"title":1176,"titles":1177,"content":1178,"level":9},"\u002Fguides\u002Finstagram-scrape-users-from-hashtag","How to scrape Instagram hashtag pages for handles and post links",[],"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. This template scrapes \"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",{"id":1180,"title":94,"titles":1181,"content":1182,"level":15},"\u002Fguides\u002Finstagram-scrape-users-from-hashtag#get-started-set-up-your-google-sheet",[1176],"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 \"Instagram hashtag data\".",{"id":1184,"title":1185,"titles":1186,"content":1187,"level":15},"\u002Fguides\u002Finstagram-scrape-users-from-hashtag#install-the-instagram-hashtag-bot","Install the Instagram hashtag bot",[1176],"To install this Instagram handle scraper 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1189,"title":1190,"titles":1191,"content":1192,"level":15},"\u002Fguides\u002Finstagram-scrape-users-from-hashtag#configure-your-instagram-hashtag-bot-in-two-easy-steps","Configure your Instagram hashtag bot in two easy steps",[1176],"1.0 Get a list of links to pages from a URLURL: Insert an Instagram hashtag URL, e.g. instagram.com\u002Fexplore\u002Ftags\u002Fbeach\u002FMax results: Set the number of posts to scrape2.0 Loop through data2.1 Go to page ^2.2 Loop through data2.2.1 Current URL ^2.2.2 Get a list of links to pages from bot's current page ^2.5 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to selectSheet name: Set the sheet name^ Preconfigured",{"id":1194,"title":1195,"titles":1196,"content":1197,"level":15},"\u002Fguides\u002Finstagram-scrape-users-from-hashtag#run-your-instagram-hashtag-bot","Run your Instagram hashtag bot",[1176],"To test the Instagram hashtag bot in \"Step 1\" adjust the \"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 add steps to login.",{"id":1199,"title":33,"titles":1200,"content":35,"level":15},"\u002Fguides\u002Finstagram-scrape-users-from-hashtag#customize-your-template",[1176],{"id":1202,"title":38,"titles":1203,"content":1204,"level":15},"\u002Fguides\u002Finstagram-scrape-users-from-hashtag#troubleshooting",[1176],"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 add steps to login. Not loading Instagram?\nMake sure you have added an Instagram hashtag URL in Step 1.0 – Get a list of links to pages from a URL.Not scraping all posts?\nIn the same step, check the Max results setting.Not looping through scraped links?\nIn Step 2.1 – Go to page, make sure Data is set to [scraped-link-data].Selectors not working?\nIn Step 2.2.2 – Get a list of links to pages from bot's current page, try reselecting or use custom selectors if needed.No data written?\nIn Step 2.5 – Write data to a Google Sheet, ensure Data is set to [all-interaction-data_1]. We offer excellent customer support. If you need help, get in touch.",{"id":1206,"title":1207,"titles":1208,"content":1209,"level":9},"\u002Fguides\u002Finteracting-with-button-list","How to loop through a list of buttons",[],"Learn how to loop through buttons on the same web page using custom CSS selectors. This is best used if you have a list that contains buttons, such as downloading invoices from a list.",{"id":1211,"title":1212,"titles":1213,"content":1214,"level":15},"\u002Fguides\u002Finteracting-with-button-list#finding-the-right-selector","Finding the right selector",[1207],"Finding the right selector is important to get started. Start by using our blog The Best Custom CSS Selectors to Use for Automations to identify a suitable selector for the button. Once you have a selector selected, you’ll need to add them into a Google Sheet.",{"id":1216,"title":1217,"titles":1218,"content":1219,"level":15},"\u002Fguides\u002Finteracting-with-button-list#building-the-selectors","Building the selectors",[1207],"For this example, we are going to use the following button selector, this is the same selector for all buttons within the list: button.download. When querying this selector this will return a list of elements that match this CSS selector.",{"id":1221,"title":1222,"titles":1223,"content":1224,"level":61},"\u002Fguides\u002Finteracting-with-button-list#method-1-nth-child","Method 1: nth-child()",[1207,1217],"The 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, button.download:nth-child(1) will select the element at position 1. Your list would look something like this: Selectorbutton.download:nth-child(0)button.download:nth-child(1)etc...",{"id":1226,"title":1227,"titles":1228,"content":1229,"level":61},"\u002Fguides\u002Finteracting-with-button-list#method-2-unique-selectors","Method 2: unique selectors",[1207,1217],"Some buttons will have similar but unique selectors, for example, button.download-1, 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: Selectorbutton.download-1button.download-2etc...",{"id":1231,"title":1232,"titles":1233,"content":1234,"level":15},"\u002Fguides\u002Finteracting-with-button-list#set-up-your-google-sheet-or-excel-sheet","Set up your Google Sheet or Excel Sheet",[1207],"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: Selectorbutton.download:nth-child(0)button.download:nth-child(1)etc...",{"id":1236,"title":1237,"titles":1238,"content":1239,"level":15},"\u002Fguides\u002Finteracting-with-button-list#set-up-your-automation","Set up your automation",[1207],"Insert a Read data from a Google Sheet or 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. Next, insert a Loop through data 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. Once you are ready to click the button, add a Click 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 Custom selector documentation.",{"id":1241,"title":1242,"titles":1243,"content":1244,"level":9},"\u002Fguides\u002Fjira-ticket-triage","How to automate Jira ticket triage with AI (Updated 2026)",[],"Learn how to automate Jira ticket triage with AI by classifying and processing support tickets automatically using a simple no code browser automation. 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. 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. This guide walks through a straightforward Axiom automation that reviews Jira tickets, classifies them, and performs actions depending on the category. As an example, we’ll keep the classification simple: spam vs. everything else. You can extend the same pattern to classify by any other criteria which works for your team.",{"id":1246,"title":1247,"titles":1248,"content":1249,"level":15},"\u002Fguides\u002Fjira-ticket-triage#install-axiom-in-your-chrome-browser","Install Axiom in your Chrome browser",[1242],"If you haven’t already installed Axiom or created an account, go to the Chrome Web Store andinstall Axiom. New accounts include 2 hours of free runtime, which is enough to build and test this automation a few times.",{"id":1251,"title":1252,"titles":1253,"content":1254,"level":15},"\u002Fguides\u002Fjira-ticket-triage#set-up-your-google-sheet","Set up your Google Sheet",[1242],"Create a new Google Sheet and name it Triage and add two sheets within it Triage and Closed. This sheet will be used to: temporarily store Jira ticket linkslog classification resultskeep a record of which tickets were processed You don’t need to add any data manually as Axiom will populate the sheet during the run.",{"id":1256,"title":1257,"titles":1258,"content":1259,"level":15},"\u002Fguides\u002Fjira-ticket-triage#open-jira-and-create-a-new-automation","Open Jira and create a new automation",[1242],"Open Chrome and log in to your Jira support portal (the page that lists incoming tickets).Open Axiom.Click + New Automation to start building from scratch. You’ll now begin adding steps using the Step Finder.",{"id":1261,"title":1262,"titles":1263,"content":1264,"level":15},"\u002Fguides\u002Fjira-ticket-triage#lets-build-the-jira-ticket-triage-automation","Let’s build the Jira ticket triage automation",[1242],"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. Step 1.0 Clear data from a Google SheetSpreadsheet — Select the Triage sheet.Purpose — Clears old results to ensure each run starts fresh.Step 2.0 Date and timePurpose — Creates a timestamp to log when each run occurred.Step 3.0 Get a list of links to pages from a URLURL — Set to your internal Jira support portal page.Select — Point and click the column with ticket\u002Fwork numbers.Purpose — Scrapes individual ticket links for triage.Step 4.0 Write data to a Google SheetSpreadsheet — Select the Triage sheet.DATA — Output from step 3.0.Purpose — Stores ticket links for staging and review.Step 5.0 Read data from a Google SheetSpreadsheet — Select the Triage sheet.Purpose — Loads ticket links back into the bot to loop through.Step 6.0 Remove results that contain certain wordsData — Select the output from step 5.0.Words to match — Add terms to exclude non-ticket URLs.Purpose — Filters out irrelevant links.Step 7.0 Loop through dataData — Select the output from step 6.0.Loop through all — Enable this to process every ticket.Step 7.1 Go to pageEnter URL — Insert ticket link from loop data.Purpose — Opens each Jira ticket one by one.Step 7.2 Get data from bot’s current pageSelect — Point and click content like description or request.Purpose — Extracts the content to classify.Step 7.3 Generate text with ChatGPTInput — Use scraped content from step 7.2.Prompt — Classify as simple output like SPAM or VALID.Purpose — Generates a tag or label for each ticket.Step 7.4 If conditionData to check — chatgpt-outputCondition — When any of \"SPAM\" is presentPurpose — Filters specific tickets for further action.Step 7.4.1 Append or merge dataData A — Ticket URLData B — Classification result, timestampPurpose — Combines key info for writing.Step 7.4.2 Append or merge data (optional)Purpose — Combine extra fields or restructure output if needed.Step 7.4.3 Write data to a Google SheetSpreadsheet — Select the Closed sheet.DATA — Combined output.Purpose — Logs all tickets classified as \"SPAM\".",{"id":1266,"title":1267,"titles":1268,"content":1269,"level":15},"\u002Fguides\u002Fjira-ticket-triage#testing-the-automation","Testing the automation",[1242],"Before running the automation at scale, it’s a good idea to test it with a small number of tickets. Run the automation and confirm that: Tickets are opened correctlyContent is extracted as expectedChatGPT returns the intended labelsResults are written back to the sheet",{"id":1271,"title":84,"titles":1272,"content":1273,"level":15},"\u002Fguides\u002Fjira-ticket-triage#wrapping-up",[1242],"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.",{"id":1275,"title":1276,"titles":1277,"content":1278,"level":9},"\u002Fguides\u002Fkeyboard-short-cuts","How to use keystrokes as workarounds",[],"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. 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. To utilize the power of keyboard shortcuts, you can use the \"Press key(s)\" step to record and reuse combinations of hotkeys.",{"id":1280,"title":1281,"titles":1282,"content":1283,"level":15},"\u002Fguides\u002Fkeyboard-short-cuts#how-to-record-keyboard-shortcuts-with-the-keypress-step","How to record keyboard shortcuts with the keypress step",[1276],"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 \"Press key(s)\" 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.",{"id":1285,"title":1286,"titles":1287,"content":1288,"level":15},"\u002Fguides\u002Fkeyboard-short-cuts#examples-of-keyboard-workarounds","Examples of keyboard workarounds",[1276],"Keyboard shortcut \u002F hotkeyExamplesUp\u002Fdown arrowsScroll a page or a box with scrollbarsLeft\u002Fright arrowsMove the cursor left or right in an input fieldTabTab to move cursor on the pageTabTab between fields in a formTabIn pop up windows tab to select elementsReturnSubmit message in a chat interfaceReturnPress a buttonCV+PCopy and paste just like a humanDeleteDelete values in a text field",{"id":1290,"title":1291,"titles":1292,"content":1293,"level":15},"\u002Fguides\u002Fkeyboard-short-cuts#ensuring-the-cursor-is-correctly-placed","Ensuring the cursor is correctly placed",[1276],"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.",{"id":1295,"title":84,"titles":1296,"content":1297,"level":15},"\u002Fguides\u002Fkeyboard-short-cuts#wrapping-up",[1276],"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.",{"id":1299,"title":1300,"titles":1301,"content":1302,"level":9},"\u002Fguides\u002Flangflow","How to automate Langflow using an axiom.ai automation",[],"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. 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.",{"id":1304,"title":48,"titles":1305,"content":1306,"level":15},"\u002Fguides\u002Flangflow#getting-started",[1300],"To get started, we will assume that you have an axiom.ai account, and a Langflow account. From axiom.ai, you'll need the following information API key: The API key is found on the dashboard.Automation name: The name of the automation to trigger.Endpoint: The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.",{"id":1308,"title":1309,"titles":1310,"content":1311,"level":15},"\u002Fguides\u002Flangflow#triggering-an-axiomai-automation-using-langflow","Triggering an axiom.ai automation using Langflow",[1300],"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. Within your workflow, search for and add an \"API Request\" component to your workflow. You'll need to configure it as such: URLs: This should be the endpoint from above.Method: Change to POST.Headers: Click \"Edit Headers\", click the \"+\" icon and add one property, as follows:{\n    \"Content-Type\": \"application\u002Fjson\"\n}\nBody - The data that you would like to send your automation, this should consist of a JSON payload. This should be formatted as per our trigger guide. To accept this data within your axiom.ai automation, follow the steps below: Receive data from another app: Add a Receive data from another app step to your automation.Configure: The \"Test data\" field should be used to replicate the data within the data portion of the payload.",{"id":1313,"title":79,"titles":1314,"content":1315,"level":15},"\u002Fguides\u002Flangflow#testing-your-workflow",[1300],"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. If there are any errors on axiom.ai's side, follow the instructions provided or see common errors for more details.",{"id":1317,"title":84,"titles":1318,"content":1319,"level":15},"\u002Fguides\u002Flangflow#wrapping-up",[1300],"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! 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);}",{"id":1321,"title":1322,"titles":1323,"content":1324,"level":9},"\u002Fguides\u002Fline-breaks","How to insert line breaks in your Insta DM's",[],"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. 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. How to insert line breaks into your DMsTo insert the line breaks you need to configure the setting inside the Enter Text step being used to input your direct message.Enter text: Click on the step to expand it.Custom line break: At the bottom of the step, click on the Custom line break setting.Click \"Record\": Record a sequence of characters to use instead of Enter for line breaks. Use something like Shift + Return.Text: Scroll back to the text input.Make sure the text is a single paragraph with no line breaks from hitting Return.Place the cursor where you want your line breaks, then press the recorded key combination (e.g., Shift + Return) to insert them.Thats it, however I would suggest doing a short test run.Wrapping upNormal 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.",{"id":1326,"title":1327,"titles":1328,"content":1329,"level":9},"\u002Fguides\u002Flinkedin-sales-navigator-message-leads","How to automate messaging leads in LinkedIn Sales Navigator",[],"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.",{"id":1331,"title":1332,"titles":1333,"content":1334,"level":15},"\u002Fguides\u002Flinkedin-sales-navigator-message-leads#get-started-set-up-your-lead-lists-on-sales-navigator","Get started: Set up your Lead lists on Sales Navigator",[1327],"Begin by creating and saving your lead list in Sales Navigator.",{"id":1336,"title":1337,"titles":1338,"content":1339,"level":15},"\u002Fguides\u002Flinkedin-sales-navigator-message-leads#install-the-linkedin-sales-navigator-messenger-bot","Install the LinkedIn Sales Navigator Messenger bot",[1327],"If you're a new user, first click \"Install Chrome Extension\", then create a free axiom.ai account to be able to edit the template. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1341,"title":1342,"titles":1343,"content":1344,"level":15},"\u002Fguides\u002Flinkedin-sales-navigator-message-leads#configure-your-linkedin-sales-navigator-messenger-bot-in-four-easy-steps","Configure your LinkedIn Sales Navigator Messenger bot in four easy steps",[1327],"1.0 Get a list of links to pages from a URLURL: Insert your \"Saved list of leads\" URL.Max Results: Controls how many leads you message.2.0 Loop through data2.1 Go to page ^2.2 Split a name into columns ^Extracts first name.2.3 Click Element: Message ^Clicks message button.2.4 Get data from bot's current page ^Scrapes to see if \"Subject\" is present in the message form.2.5 Remove HTML code ^2.6 If conditionChecks if subject is present. If true, a subject line is entered.2.6.1 Enter Text: Subject (required)Text: Enter a subject for your message. This field is required for messages to 2nd degree leads.2.7 Enter Text: Type your messageText: Enter the message to be sent.2.8 Press Key(s) ^Presses return key to send the message.2.9 Wait ^Waits for message to send.^ Preconfigured",{"id":1346,"title":1347,"titles":1348,"content":1349,"level":15},"\u002Fguides\u002Flinkedin-sales-navigator-message-leads#run-your-sales-navigator-messenger-bot","Run your Sales Navigator Messenger bot",[1327],"To test the Sales Navigator Messenger bot, disable 'Step 2.8: Press Key(s)' to prevent sending messages.",{"id":1351,"title":38,"titles":1352,"content":1353,"level":15},"\u002Fguides\u002Flinkedin-sales-navigator-message-leads#troubleshooting",[1327],"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 add steps to login. Not loading the correct page?\nCheck that your \"Saved List of Leads\" URL is correctly inserted in the Get a list of links to pages from a URL step.Want to change how many people you connect with?\nIn the same step, adjust Max results.Not looping through profiles?\nMake sure [scraped-link-data] is inserted and points to the correct column in the Go to page step.Not clicking the Message button?\nReselect the element in the Click Element step.Subject line not added during run?\nIn Step 2.6.1 – Enter Text: Subject, make sure text is inserted.Message not added during run?\nIn Step 2.7 – Enter Text: Type your message, check that text is inserted. We offer excellent customer support. If you need help, get in touch.",{"id":1355,"title":1356,"titles":1357,"content":1358,"level":9},"\u002Fguides\u002Floop-through-links-and-scrape-data","Scrape data from a list of links",[],"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. Learn how to build an automation that allows you to loop through a list of links from a spreadsheet using our Google Sheets 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 Selector Tool.\n:: 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. To get started quickly, see our template.",{"id":1360,"title":1361,"titles":1362,"content":1363,"level":15},"\u002Fguides\u002Floop-through-links-and-scrape-data#building-the-automation","Building the automation",[1356],"There are multiple steps used within the automation: Read data from a Google Sheet step.Loop through data step.Go to page step.Get data from bot's current page step.Write data to a Google Sheet step.Delete row from a Google Sheet step.",{"id":1365,"title":1366,"titles":1367,"content":1368,"level":61},"\u002Fguides\u002Floop-through-links-and-scrape-data#setup","Setup",[1356,1361],"Prepare your Google Sheets spreadsheet. Add a single link per row. Col Ahttps:\u002F\u002Fexample.comhttps:\u002F\u002Fexample.comhttps:\u002F\u002Fexample.com Create a new axiom.ai automation by opening the extension and clicking \"+ New automation\". Use the Step Finder to add new steps to your automation.",{"id":1370,"title":1371,"titles":1372,"content":1373,"level":61},"\u002Fguides\u002Floop-through-links-and-scrape-data#start-from-blank","Start from blank",[1356,1361],"1.0 Read data from a Google SheetSpreadsheet: Select the spreadsheet containing your list of links.Sheet name: (Optional) Select the sheet within the spreadsheet.First cell: (Optional) Start cell, e.g. \"A1\".Last cell: (Optional) End cell, e.g. \"A21\".2.0 Loop through dataData: Click Insert data, select google-sheet-data.2.1 Go to pageEnter URL: Click Insert data, select the column in google-sheet-data with the links.Tip: Click \"Clear all\" to ensure only one column is selected.2.2 Get data from bot's current pageSelect: Use the selector tool to select the data to scrape from the page.2.3 Write data to a Google SheetSpreadsheet: Select the spreadsheet to write to.Sheet name: (Optional) Select the sheet.DATA: Select scraped-data.Write options: Choose \"Add to existing data\" to append, or \"Clear data before writing\" to overwrite.2.4 Delete rows from a Google Sheet (optional)Spreadsheet: Select the spreadsheet.Sheet name: (Optional) Select the sheet.First row to delete: Set to 1.Last row to delete: Set to 1.",{"id":1375,"title":84,"titles":1376,"content":1377,"level":15},"\u002Fguides\u002Floop-through-links-and-scrape-data#wrapping-up",[1356],"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 How to extract links and write to a Google Sheet guide to quickly get started.",{"id":1379,"title":1380,"titles":1381,"content":1382,"level":9},"\u002Fguides\u002Fmagnet","How to download keyword data from Magnet into a Google Sheet",[],"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. 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. 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. For this guide, we'll focus on Simple Search Mode, but the same principles apply to automating an Advanced Search. Check out our other Helium10 guides if you're interested in automating Cerebro or Black Box",{"id":1384,"title":282,"titles":1385,"content":1386,"level":15},"\u002Fguides\u002Fmagnet#getting-started",[1380],"To begin, create a Google Sheet and add two tabs: one for search terms and another to store extracted data. Create a new Google Sheet: If you're logged into Google, type sheet.new in your browser to quickly create a new sheet.Set up tab one: Add your search terms into the first tab.Set up tab two: Name the second tab \"data\" and leave it blank.",{"id":1388,"title":1389,"titles":1390,"content":1391,"level":15},"\u002Fguides\u002Fmagnet#how-to-automate-extracting-keywords-from-magnet","How to automate extracting keywords from Magnet",[1380],"To start building your bot, open axiom.ai and click \"New automation\" to use the no-code bot builder. Then, click \"Add first step\" and follow the guide. Download the template we created for this keyword scraper. Click to learn how to upload it. Add a 'Read data from a Google Sheet' step and configure.Spreadsheet: Search for and add the Google Sheet you created.Sheet name: Choose the tab containing the search terms.Add a 'Loop through data' step.Loop through data: Click 'Insert Data' and select 'google-sheet-data'. The loop step will now iterate through the search terms in the Google Sheet.Add a 'Go to page' sub-step to load the Magnet landing page with the search field.Enter URL: The URL will look something like this:\"https:\u002F\u002Fmembers.helium10.com\u002Fmagnet\u002Fproducts?accountId=xxxxxxx\"Add an 'Enter text' sub-step.Text: Click 'Insert Data' and select 'google-sheet-data' to pass the search terms from the sheet.Select column: Choose column ‘A’ in the preview.\n   \nAdd a 'Click element' sub-step to click \"Get Keywords.\"Select: Click 'Select', then click on \"Custom\" and tick \"Use element text.\" Finally, click \"Complete.\"To close the pop-up, add a 'Click element' step to click \"Run new search\" or \"Load from history.\"Select: Click 'Select', then click on \"Custom\" and insert \"[data-testid=\"runnewsearch\"]\" or \"[data-testid=\"loadfromhistory\"]\".Optional Click: Tick this option, as the pop-up does not always appear.\n   \nAdd a 'Wait' step to pause the bot and allow the data to load.Wait time: Insert \"7000\" to make the bot wait 7 seconds. You may need to experiment with wait time.Add a ‘Get data from bot's current page’ sub-step. With search results displayed on the Magnet page, select the data you wish to extract.Select: Click ‘Select’ to open the multi-selector tool.Select the first keyword in the \"Keyword Phrase\" column, then repeat the selection for rows below to make a repeating selection.Press \"Shift + N\" to add a new column. On the page, select the CPR column in the first row, then repeat the selection in the second row.\n   \nSelect the 'Next' button for pagination using the right arrow key.Set a maximum number of results you wish to scrape. I chose 100 when making this bot.Add a 'Write data to a Google Sheet' step.Spreadsheet: Select your Google Sheet.Sheet Name: Choose the tab where you want to write the Amazon keyword data.Data: Click 'Insert Data' and choose \"scraped-data-\".Write Options: Select 'Add to Existing Data' to append the new data without deleting the existing data.Add a 'Delete rows from a Google Sheet' step to remove the processed search term.Spreadsheet: Select your Google Sheet.Sheet Name: Choose the tab containing the search criteria.First Row to Delete: Leave this set to 1.Last Row to Delete: Set to 10. The Magnet automation, when completed, should resemble the diagram below.",{"id":1393,"title":1394,"titles":1395,"content":1396,"level":15},"\u002Fguides\u002Fmagnet#testing-your-magnet-automation","Testing your Magnet automation",[1380],"Once you have saved your **Helium10 Magnet ** automation, click \"Run\" within the axiom.ai extension to start extracting keyword data.",{"id":1398,"title":393,"titles":1399,"content":1400,"level":61},"\u002Fguides\u002Fmagnet#issues-you-may-encounter",[1380,1394],"Element not found: You may need to reselect elements. Changing marketplaces can sometimes affect selectors.Keyword data not loading in time: Magnet can sometimes be slow to load data, so you may need to adjust the wait time in Step 7.",{"id":1402,"title":301,"titles":1403,"content":1404,"level":15},"\u002Fguides\u002Fmagnet#try-out-the-template",[1380],"While creating this guide and testing axiom.ai on Magnet, we also built a template. If you choose to use the template, you will need to do the following: Step 1: Add your own Google Sheet.Step 2.1: Add the URL to the Magnet page while logged in.Step 2.7: Select the data you wish to scrape.Steps 2.8 and 2.9: Add your own Google Sheet. Please note that this template is a starting point, and you may need to customize it. Click to download the Magnet template.",{"id":1406,"title":84,"titles":1407,"content":1408,"level":15},"\u002Fguides\u002Fmagnet#wrapping-up",[1380],"Extracting keyword data from Magnet is straightforward. You can simply point and select the data you want. This template can be modified and used as a starting point. If you need help automating Helium10, reach out to support@axiom.ai, and we’ll help you create an automation. Testing was completed on January 29, 2025. Features in Helium10 or axiom.ai may change over time, and updates may be needed.",{"id":1410,"title":1411,"titles":1412,"content":1413,"level":9},"\u002Fguides\u002Fmonitor-web-page-and-send-message","How to monitor a web page and send email",[],"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. 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. The bot scrapes a list of content, such as titles or prices comparing them against a previous scrape to monitor for changes. This template is simple and adaptable to different websites, from products to stock listings. A Google Sheet is required to store data for comparison. 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 template.",{"id":1415,"title":1416,"titles":1417,"content":1418,"level":15},"\u002Fguides\u002Fmonitor-web-page-and-send-message#advantages-to-using-this-web-monitoring-design-pattern","Advantages to using this web monitoring design pattern",[1411],"Adaptable to different types of websiteMonitoring can be scheduled at regular intervals",{"id":1420,"title":1421,"titles":1422,"content":1423,"level":15},"\u002Fguides\u002Fmonitor-web-page-and-send-message#install-the-monitor-bot-template","Install the Monitor bot template",[1411],"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.",{"id":1425,"title":1426,"titles":1427,"content":1428,"level":15},"\u002Fguides\u002Fmonitor-web-page-and-send-message#prepare-a-google-sheet","Prepare a Google Sheet",[1411],"A Google sheet is required with a list of data to compare against.",{"id":1430,"title":1431,"titles":1432,"content":1433,"level":15},"\u002Fguides\u002Fmonitor-web-page-and-send-message#configure-the-bot","Configure the bot",[1411],"1.0 Get data from bot's current pageURL: Insert the link of the page you wish to monitor.Select: Point and click to select the content to monitor.Find pager (optional): Select the “Next” button if the page is paginated.Max Results: When testing, set to 10–20.2.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created.Sheet name: Choose the sheet with the comparison data.First cell \u002F Last cell: Leave as default.A preview of the data should now display.3.0 Remove results that do not contain certain wordsData: Click Insert data, select scrape-data.Words: Click Insert data, select google-sheet-data.Word matching mode: Leave set to \"Any\".Match on word boundary: Leave unticked.Columns (optional): Leave as default.4.0 If condition: Continue only if new content foundData to check: Click Insert data, select [matching-word-data].Words to check: Use default (a–z, 0–9).Word matching mode: \"Any\".Match on word boundary: Leave unticked.Fail if condition not met: Tick this box.Reverse condition: Leave unticked.5.0 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created.Sheet name: Choose the sheet with existing content.DATA: Select [matching-word-data].Clear data before writing | Add to existing data: Set to \"Add to existing data\".6.0 Send emailEmail addresses: Enter email addresses, one per line.Email subject: Add your subject.Email body: Add your message. Use Insert data to include [matching-word-data].",{"id":1435,"title":1436,"titles":1437,"content":1438,"level":15},"\u002Fguides\u002Fmonitor-web-page-and-send-message#test-run","Test run",[1411],"We always recommed doing a test run - click run then check the output from the scraper. In this case in the sheet.",{"id":1440,"title":1441,"titles":1442,"content":1443,"level":15},"\u002Fguides\u002Fmonitor-web-page-and-send-message#troubleshooting-the-monitoring-axiom","Troubleshooting the monitoring Axiom",[1411],"As mentioned at the top of the page, you will need to scrape data to compare against before running this bot. All results write to the Google Sheet, check the 'Write' Step is set to 'word-matching-data'.No message sent - perhaps no change has been detected.",{"id":1445,"title":1446,"titles":1447,"content":1448,"level":9},"\u002Fguides\u002Fmonitoring-send-webhook","How to monitor a web page and trigger webhook",[],"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. 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. The bot scrapes a list of content, such as titles or prices comparing them against a previous scrape to monitor for changes. This template is simple and adaptable to different websites, from products to stock listings. A Google Sheet is required to store data for comparison. 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 template.",{"id":1450,"title":1416,"titles":1451,"content":1418,"level":15},"\u002Fguides\u002Fmonitoring-send-webhook#advantages-to-using-this-web-monitoring-design-pattern",[1446],{"id":1453,"title":1421,"titles":1454,"content":1423,"level":15},"\u002Fguides\u002Fmonitoring-send-webhook#install-the-monitor-bot-template",[1446],{"id":1456,"title":1426,"titles":1457,"content":1458,"level":15},"\u002Fguides\u002Fmonitoring-send-webhook#prepare-a-google-sheet",[1446],"A Google sheet is required with a list of data to compare against. We suggest you adpat this template.",{"id":1460,"title":1461,"titles":1462,"content":1463,"level":15},"\u002Fguides\u002Fmonitoring-send-webhook#get-started-open-the-bot-for-editing","Get started open the bot for editing",[1446],"1.0 Get data from bot's current pageURL: Insert the link of the page you wish to monitor.Select: Point and click to select the content to monitor.Find pager (optional): Select the “Next” button if the page has pagination. If the page scrolls, leave this blank.Max Results: For testing, set to 10–20.2.0 Read data from a Google SheetSpreadsheet: Search for and select the Google Sheet you created.Sheet name: Choose the sheet containing the comparison data.First cell: Leave as default.Last cell: Leave as default.A preview of the data should now appear.3.0 Remove results which do not contain certain wordsData: Click Insert data, select scrape-data.Words (comma separated): Click Insert data, select google-sheet-data.Word matching mode: Set to \"Any\".Match on word boundary: Leave unticked.Columns (optional): Leave default.4.0 If condition: Continue only if new content is foundData to check: Click Insert data, select [matching-word-data].Words to check: Leave as (a,b,c,...,z,0–9).Word matching mode: \"Any\".Match on word boundary: Leave unticked.Fail if condition not met: Tick this box.Reverse condition: Leave unticked.5.0 Write data to a Google SheetSpreadsheet: Search for and select the Google Sheet you created.Sheet name: Choose the sheet you’re appending to.DATA: Select [word-matching-data].Write options: Set to \"Add to existing data\".6.0 Trigger a webhookEndpoint: Insert the webhook endpoint.Payload: Enter your payload in JSON format. Webhook trigger example: {\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  }",{"id":1465,"title":1436,"titles":1466,"content":1467,"level":15},"\u002Fguides\u002Fmonitoring-send-webhook#test-run",[1446],"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.",{"id":1469,"title":1441,"titles":1470,"content":1471,"level":15},"\u002Fguides\u002Fmonitoring-send-webhook#troubleshooting-the-monitoring-axiom",[1446],"As mentioned at the top of the page, you will need to scrape data to compare against before running this bot. All results write to the Google Sheet, check the 'Write' Step is set to 'word-matching-data'.No message sent - Check your JSON",{"id":1473,"title":1474,"titles":1475,"content":1476,"level":9},"\u002Fguides\u002Fpattern","Pattern guides",[],"Reusable techniques for the No-code tool—logins, dialogs, forms, keyboard shortcuts, APIs, and moving data between steps. 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.",{"id":1478,"title":1479,"titles":1480,"content":1481,"level":9},"\u002Fguides\u002Fpost-data-to-airtable","How to post data to Airtable using an axiom.ai automation",[],"Learn how to post scraped data to Airtable and create new records, using axiom.ai's write JavaScript step and webhooks. 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. This guide assumes you are familiar with both axiom.ai and Airtable and have a basic understanding of JavaScript.",{"id":1483,"title":48,"titles":1484,"content":1485,"level":15},"\u002Fguides\u002Fpost-data-to-airtable#getting-started",[1479],"To get started, you will need the following from the axiom.ai Chrome extension: API key: The API key is found on the dashboard.Automation name: Get the name of the automation you wish to trigger.Endpoint - The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger. You'll also need information from Airtable: Base ID: Head to the Airtable API page to grab your \"Base ID\". Your ID will look something like \"appFrf1jmiyIq5nuJ\". You can also find this in the URL of your base.Table name: Open your Airtable base, the tab names will be the table name that you need to use. Create a personal access token via the Airtable Developer Hub. Personal access token: Open the personal access token page.Create new token: Click on the button \"create a new token.\"Name: Name your new token.Scopes: Set the scope to \"data.records:write\".Access: Select the Base you wish to add records to.Create token: Create the token, copy it for later.",{"id":1487,"title":1488,"titles":1489,"content":1490,"level":15},"\u002Fguides\u002Fpost-data-to-airtable#sending-data-to-airtable-using-an-axiomai-automation","Sending data to Airtable using an axiom.ai automation",[1479],"Learn how to get started with sending data from your axiom.ai automation to Airtable.",{"id":1492,"title":1493,"titles":1494,"content":1495,"level":61},"\u002Fguides\u002Fpost-data-to-airtable#set-up-your-axiomai-automation","Set up your axiom.ai automation",[1479,1488],"Create your automation as per usual. When you need to send data to Airtable, add a write JavaScript to your automation. Follow the guides below to determine which script you'll need to send along your data to Airtable.",{"id":1497,"title":1498,"titles":1499,"content":1500,"level":61},"\u002Fguides\u002Fpost-data-to-airtable#create-a-single-record","Create a single record",[1479,1488],"The following code will create a single record in Airtable. You'll need your credentials from the Getting Started section to begin. You'll need to modify the attributes in the recordData array with this data. When scraping, ensure that the max results option is set to 1. Add credentials: Insert base ID, table name, and personal access token into the script.Field names: Edit the field names in recordData to match your table.Field values: Insert axiom.ai data tokens for the value of each field, replacing the examples. Tip: use the 'insert data' button to do this step. \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);",{"id":1502,"title":1503,"titles":1504,"content":1505,"level":61},"\u002Fguides\u002Fpost-data-to-airtable#create-multiple-records-up-to-10","Create multiple records (up to 10)",[1479,1488],"The following code will create multiple records in Airtable. You'll need your credentials from the Getting Started section to begin. You'll need to modify the attributes in the recordData array with this data. When scraping, ensure that the max results option is set to 10. Airtable's API limits records created per call to 10. Add credentials: Insert base ID, table name, and personal access token into the script.axiomData: Remove example token and insert your own. Tip: use the 'insert data' button to do this step.Field names: Edit the field names in \"recordsToSend\", to match your table. \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);",{"id":1507,"title":1508,"titles":1509,"content":1510,"level":61},"\u002Fguides\u002Fpost-data-to-airtable#create-multiple-records-more-than-10","Create multiple records (more than 10)",[1479,1488],"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. Add credentials: Insert base ID, table name, and personal access token into the script.axiomData: Remove example token and insert your own.Fields: Edit the fields in \"recordsToSend\", to match your table. \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);",{"id":1512,"title":79,"titles":1513,"content":1514,"level":15},"\u002Fguides\u002Fpost-data-to-airtable#testing-your-workflow",[1479],"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. Check for console logs in the runtime browser.Ensure your credentials are correct.Make sure all field names match exactly with your Airtable table.",{"id":1516,"title":84,"titles":1517,"content":1518,"level":15},"\u002Fguides\u002Fpost-data-to-airtable#wrapping-up",[1479],"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. 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);}",{"id":1520,"title":1521,"titles":1522,"content":1523,"level":9},"\u002Fguides\u002Fpost-data-to-make","How to trigger and post data to Make with an axiom.ai automation",[],"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. 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. This guide assumes you have a Make account and have created your axiom.ai automation. To learn more about our Make integration, see our working with Make documentation.",{"id":1525,"title":48,"titles":1526,"content":50,"level":15},"\u002Fguides\u002Fpost-data-to-make#getting-started",[1521],{"id":1528,"title":1529,"titles":1530,"content":1531,"level":15},"\u002Fguides\u002Fpost-data-to-make#trigger-and-send-data-to-make-with-an-axiomai-automation","Trigger and send data to Make with an axiom.ai automation",[1521],"Open Make, and either edit or create a new scenario to get started, then follow the steps below. Log into Make: Click on \"Scenarios\", and open an existing or create a new scenario.If the App selector is open: Click \"Webhooks\", or click the plus button to open the app selector.\"Triggers\": Select \"Custom webhook\". Webhook: Give your webhook a name or choose an existing one, then click \"Save\".Click: \"Copy my address\" to get the webhook endpoint to add into your browser automation.Make: 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. Switching to axiom.ai, use the step finder to add the Trigger webhook step and configure it. Endpoint: Paste the endpoint from Make into this field.Click:  \"Insert data\" and select [scrape-data] or any data you wish to send to Make.",{"id":1533,"title":1534,"titles":1535,"content":1536,"level":15},"\u002Fguides\u002Fpost-data-to-make#use-cases","Use cases",[1521],"Using Make with axiom.ai can unlock a lot of opportunities, let's drive into some use cases that you can use them for.",{"id":1538,"title":1539,"titles":1540,"content":1541,"level":61},"\u002Fguides\u002Fpost-data-to-make#post-data-to-excel","Post data to Excel",[1521,1534],"To send data to Excel, set up your automation and Make scenario as normal - follow the Trigger and send data to Make with an axiom.ai 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.",{"id":1543,"title":79,"titles":1544,"content":1545,"level":15},"\u002Fguides\u002Fpost-data-to-make#testing-your-workflow",[1521],"Now click \"Run\" in axiom.ai and switch back to Make. Once the axiom.ai automation has run, check in Make for the message \"successfully determined\".This means the data has been successfully sent.",{"id":1547,"title":84,"titles":1548,"content":1549,"level":15},"\u002Fguides\u002Fpost-data-to-make#wrapping-up",[1521],"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.",{"id":1551,"title":1552,"titles":1553,"content":1554,"level":9},"\u002Fguides\u002Fpost-on-threads","How to automate posting on Meta’s new text message app Threads",[],"Learn how to automate sending posts on threads with this step by step guide for creating a browser bot. 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, uploads an image and posts it. This Threads automation takes only a few minutes to make using our builder.",{"id":1556,"title":1031,"titles":1557,"content":1558,"level":15},"\u002Fguides\u002Fpost-on-threads#create-a-blank-google-sheet",[1552],"Create a Google Sheet add some Post to the sheet. See example below. ABAxiom can automate Instagram\u002FUsers\u002Fthudercloudone\u002FDesktop\u002FScreenshot 2024-04-05 at 12.20.24.pngAxiom can automate anything in the browser\u002FUsers\u002Fthudercloudone\u002FDesktop\u002FScreenshot 2024-04-05 at 12.20.24.png",{"id":1560,"title":518,"titles":1561,"content":1562,"level":15},"\u002Fguides\u002Fpost-on-threads#start-from-blank-adding-the-following-steps",[1552],"In the axiom.ai Chrome extension, click \"New Automation\" and then select \"Start from Blank\". Use the step finder to add the steps outlined below. 1.0 Read data from a Google SheetSpreadsheet: Search for and select the Google Sheet you created.Sheet name: Choose a sheet tab or leave blank to use the first tab.First cell: Set to \"A1\".Last cell: Set to \"AB1\".2.0 Loop through dataData: Click Insert data, select google-sheet-data.2.1 Go to page: ThreadsEnter URL: Insert https:\u002F\u002Fwww.threads.net.2.2 Click element: Open post modalSelect: Click Select, highlight the Post button and press Complete.Click: Set to \"Custom\" and tick \"Use element text instead of HTML\".2.3 Enter text: MessageText: Click Insert data, select column A from google-sheet-data.2.4 Upload a file: Add imageSelect: Click Select, highlight the image upload icon, click, then press Complete.File Path: Click Insert data, select column B from google-sheet-data.2.5 Click element: PostSelect: Click Select, highlight the Post button again and click.Click: Set to \"Custom\" and tick \"Use element text instead of HTML\".2.6 Delete rows from a Google SheetSpreadsheet: Search for and select the same Google Sheet.Sheet name: Choose the same tab or leave blank.First row to delete: Set to 1.Last row to delete: Set to 1.",{"id":1564,"title":84,"titles":1565,"content":1566,"level":15},"\u002Fguides\u002Fpost-on-threads#wrapping-up",[1552],"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 ‘Upload a file from Google Drive’ to run in the cloud.",{"id":1568,"title":1569,"titles":1570,"content":1571,"level":9},"\u002Fguides\u002Fpower-automate","How to trigger axiom.ai automations using Power Automate",[],"Use Power Automate to trigger your axiom.ai automations and use axiom.ai automations to trigger your flows. 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. 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.",{"id":1573,"title":48,"titles":1574,"content":50,"level":15},"\u002Fguides\u002Fpower-automate#getting-started",[1569],{"id":1576,"title":1577,"titles":1578,"content":1579,"level":15},"\u002Fguides\u002Fpower-automate#trigger-an-axiomai-automation-with-power-automate","Trigger an axiom.ai automation with Power Automate",[1569],"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.",{"id":1581,"title":1582,"titles":1583,"content":1584,"level":61},"\u002Fguides\u002Fpower-automate#triggering-with-the-power-automate-desktop-app","Triggering with the Power Automate desktop app",[1569,1577],"You will first need to ensure you have installed Power Automate from the Microsoft Store. New flow: Open Power Automate, tap \"+ New flow\" to create a new flow.Configure: You can add any number of steps to your flow, or use an existing flow to trigger your axiom.ai automation.Invoke web service: Search for the \"invoke web service\" action, add this to your flow. To configure the invoke web service action, you'll need to enable the following: URL: The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.Method: Set to POST.Accept: Set to application\u002Fjson.Content Type: Set to application\u002Fjson.Request body: This should be set to the per our API | Triggering an automation documentation.Encode request body: This should be disabled.",{"id":1586,"title":1587,"titles":1588,"content":1589,"level":61},"\u002Fguides\u002Fpower-automate#triggering-with-the-power-automate-web-app","Triggering with the Power Automate web app",[1569,1577],"You can access Power Automate on the web. This requires a paid subscription with Power Automate. Create a new flow: Open Power Automate on the web, create a new \"instant-\" or \"scheduled cloud flow\".Select trigger: Set to your desired trigger: this guide will focus on the \"manually trigger a flow\" option.Add HTTP action: Click \"new step\" and search for the HTTP action. To configure the HTTP action, you'll need to enable the following: URL: The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.Method: Set to POST.Headers: Set to Content-Type: application\u002Fjson.Request body: This should be set to the per our API | Triggering an automation documentation.",{"id":1591,"title":1592,"titles":1593,"content":1594,"level":15},"\u002Fguides\u002Fpower-automate#trigger-a-power-automate-flow-with-an-axiomai-automation","Trigger a Power Automate flow with an axiom.ai automation",[1569],"This guide is only applicable to Power Automate on the web. Power Automate's desktop app currently does not support triggers via webhook. Create a new flow: Open Power Automate on the web, create a new \"instant-\" or \"scheduled cloud flow\".Select trigger: Set your trigger to \"when a HTTP request is received\".Configure: Set the \"when a HTTP request is received\" action to allow for triggering from \"anyone\". Note: consider your organisations security needs before enabling this. Optionally, you can set a \"request body JSON schema\".Save & get URL: Save your flow to generate the webhook URL, save this for later: this will be unique for your flow.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.Trigger a webhook: 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.",{"id":1596,"title":79,"titles":1597,"content":1598,"level":15},"\u002Fguides\u002Fpower-automate#testing-your-workflow",[1569],"Now that you've built out your entire workflow, you can test it! Trigger axiom.ai automation: Open the Power Automate flow you have created to trigger your automation. Hit \"Run\".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. 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.",{"id":1600,"title":84,"titles":1601,"content":1602,"level":15},"\u002Fguides\u002Fpower-automate#wrapping-up",[1569],"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. Information valid as of 22nd October 2024..",{"id":1604,"title":1605,"titles":1606,"content":1607,"level":9},"\u002Fguides\u002Fsales-navigator-connect","How to automate your lead connections on LinkedIn Sales Navigator",[],"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. 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 menu option, clicks  Connect and enters a customized message for each lead using their name. Finally, it clicks  Send invitation. This process ensures that a personalized message is sent iteratively to each lead when connecting.",{"id":1609,"title":1332,"titles":1610,"content":1334,"level":15},"\u002Fguides\u002Fsales-navigator-connect#get-started-set-up-your-lead-lists-on-sales-navigator",[1605],{"id":1612,"title":1613,"titles":1614,"content":1615,"level":15},"\u002Fguides\u002Fsales-navigator-connect#install-the-sales-navigator-messenger-connection-bot","Install the Sales Navigator Messenger Connection bot",[1605],"If you're a new user, first click Install Chrome Extension, then create a free axiom.ai account to be able to edit the template. Once installed, click Start. axiom.ai will guide you through the steps you need to configure in the app.",{"id":1617,"title":1618,"titles":1619,"content":1620,"level":15},"\u002Fguides\u002Fsales-navigator-connect#configure-your-sales-navigator-messenger-connection-steps","Configure your Sales Navigator Messenger Connection steps",[1605],"1.0 Get a list of links to pages from a URLURL: Paste your \"Saved list of leads\" URL.Max Results: Set how many leads to connect and message.2.0 Loop through data2.1 Go to page^: Navigates to each lead’s profile.2.2 Split name into columns^: Extracts first name.2.3 Click Element^: Clicks menu button.2.4 Click Element^: Clicks \"Connect\" button.2.5 Wait^: Pauses before next step.2.6 Enter TextText: Enter the message to send.2.7 Click Element^: Clicks \"Send invitation\" button.2.9 Wait^: Waits for the request to be sent.^ Preconfigured",{"id":1622,"title":1623,"titles":1624,"content":1625,"level":15},"\u002Fguides\u002Fsales-navigator-connect#run-your-sales-navigator-messenger-connection-bot","Run your Sales Navigator Messenger Connection bot",[1605],"To test the Sales Navigator Messenger Connection bot, disable Step 2.8: Press Key(s) to prevent sending messages.",{"id":1627,"title":38,"titles":1628,"content":1629,"level":15},"\u002Fguides\u002Fsales-navigator-connect#troubleshooting",[1605],"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 add steps to login. Not loading a filtered search?\nEnsure you have set filters in Apollo, then copy the full filtered search URL into the Go to page step.Select button not working?\nIn the Click element step, use the custom selector .finder-select-multiple-entities-button. Learn more.'Select this page' not clicked?\nUse the 'Element text' option in the selector tool to target \"Select this page\".Save People button not working?\nReselect the 'Save' button in the Click element step or try using 'Element text'.Select list not opening?\nUse this custom selector in the Click element step: div[role=\"dialog\"] .zp-select-indicators. Learn more.Save keystroke not working?\nRe-record the Enter keystroke in the Press key(s) step.Save happens too fast?\nIncrease the wait time in the Wait step to ensure save completes.Next button not working?\nReselect the \"Next\" button at the bottom of the table.Jump goes to the wrong step?\nSet the Jump to another step to return to Step 2.0. We offer excellent customer support. If you need help, get in touch.",{"id":1631,"title":1632,"titles":1633,"content":1634,"level":9},"\u002Fguides\u002Fscrape-amazon","How to Scrape Amazon for Product Data (Fast and Easy)",[],"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. 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.",{"id":1636,"title":12,"titles":1637,"content":1638,"level":15},"\u002Fguides\u002Fscrape-amazon#get-started-create-your-google-sheet",[1632],"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut \"sheet.new\", presuming you already have an account. Name your sheet something like \"Amazon Scraper\" and set up a tab called 'Amazon product links\"**. Add another tab called 'Data'.",{"id":1640,"title":1641,"titles":1642,"content":1643,"level":15},"\u002Fguides\u002Fscrape-amazon#install-the-amazon-scraper","Install the Amazon Scraper",[1632],"To install this Amazon scraper 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1645,"title":1646,"titles":1647,"content":1648,"level":15},"\u002Fguides\u002Fscrape-amazon#configure-your-amazon-scraper-in-minutes","Configure your Amazon scraper in minutes",[1632],"Step 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab called \"Amazon product links\".Step 2.0 Loop through dataStep 2.1 Go to pageEnter URL: Click Insert Data, select google-sheet-data, and choose the column with the links.Step 2.2 Current URLNo change required.Step 2.3 Get data from bot's current pageSelect: Point and click to select the data you wish to scrape.Max Results: Set to match the number of columns of data you selected to scrape.Step 2.4 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created.DATA: Select [scrape-data].Clear data before writing | Add to existing data: Set to \"Add to existing data\".Step 2.5 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created for links.First row: Set to 1.Last row: Set to 1.",{"id":1650,"title":1651,"titles":1652,"content":30,"level":15},"\u002Fguides\u002Fscrape-amazon#run-your-amazon-scraper","Run your Amazon scraper",[1632],{"id":1654,"title":33,"titles":1655,"content":35,"level":15},"\u002Fguides\u002Fscrape-amazon#customize-your-template",[1632],{"id":1657,"title":38,"titles":1658,"content":1659,"level":15},"\u002Fguides\u002Fscrape-amazon#troubleshooting",[1632],"We recommend you watch the video to troubleshoot. Want to set an amount of loops?\nIn Step 1.0 – Read data from a Google Sheet, set a Last Cell. For example, AE100 will scrape 100 rows.Selectors fail to find content?\nIn Step 2.3 – Get data from bot's current page, try reselecting or using custom selectors.Slow running scraper?\nIn the same step, toggle Configure scraper, then set No. of retry... to 1.Want to speed the scraper up?\nSet Max Results to match the number of columns you selected to scrape.No data written?\nIn Step 2.4 – Write Data to a Google Sheet, check that Data is set to [scrape-data].Keeps overwriting data?\nMake sure Add to existing is selected in the same step. We offer excellent customer support. If you need help, get in touch.\nLooking to scrape ASINs or automate Amazon posts follow these guides. Read this link If you want to scrape Amazon books.",{"id":1661,"title":1662,"titles":1663,"content":1664,"level":9},"\u002Fguides\u002Fscrape-html-extract-data-with-ai","How to extract data from HTML with an AI",[],"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. Learn how simple it is to create a web scraper that loops through URLs in a Google Sheets, scrapes the HTML, and then uses ChatGPT to extract data—all by combining just a few steps and completely bypassing the need for CSS selectors. get started quickly with this ChatGPT web scraper template. Visit these pages to learn more about getting started with extracting data and using our [builder.](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder A ChatGPT subscription is required to run this bot.",{"id":1666,"title":518,"titles":1667,"content":520,"level":15},"\u002Fguides\u002Fscrape-html-extract-data-with-ai#start-from-blank-adding-the-following-steps",[1662],{"id":1669,"title":513,"titles":1670,"content":1671,"level":15},"\u002Fguides\u002Fscrape-html-extract-data-with-ai#prepare-your-google-sheet",[1662],"Separate your URLs row by row in the same column. Col ACol BInsert your URLs like this---Insert your URLs like this---Insert your URLs like this---",{"id":1673,"title":1674,"titles":1675,"content":1676,"level":15},"\u002Fguides\u002Fscrape-html-extract-data-with-ai#create-your-bot","Create your bot",[1662],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.First cell: Set to \"A1\".Last cell: Set to \"AB1\".2.0 Loop through dataLoop source: Click \"Insert data\", then select google-sheet-data.2.1 Go to pageEnter URL: Click \"Insert data\", select google-sheet-data.2.2 Get data from bot's current pageSelect: Click and choose the outermost HTML element to scrape.Data type: Set to \"Select HTML\". See how here.2.3 Extract data with ChatGPTChatGPT API key: Enter your API key.Data: Insert [scrape-data].Extract values: Enter the fields you want to extract, e.g. \"name, email, job title\".2.4 Write data to a Google SheetSpreadsheet: Select your Google Sheet or paste the URL.Sheet name: Choose a sheet tab or leave blank for the first tab.Data: Click \"Insert data\" and select scraped-link-data.Write options: Set to \"Add to existing data\".2.5 Delete rows from a Google SheetSpreadsheet: Select the same Google Sheet.Sheet name: Choose the same tab or leave blank.First row to delete: Set to 1.Last row to delete: Set to 1.",{"id":1678,"title":84,"titles":1679,"content":1680,"level":15},"\u002Fguides\u002Fscrape-html-extract-data-with-ai#wrapping-up",[1662],"In just seven steps you can create a simple web scraper to extract data from any website with ChatGPT 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.",{"id":1682,"title":1683,"titles":1684,"content":1685,"level":9},"\u002Fguides\u002Fscrape-likes-from-instagram-posts","How to scrape users from likes on Instagram posts",[],"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. 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.",{"id":1687,"title":94,"titles":1688,"content":1689,"level":15},"\u002Fguides\u002Fscrape-likes-from-instagram-posts#get-started-set-up-your-google-sheet",[1683],"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut  \"sheet.new\", presuming you already have an account. Name your sheet something like  \"Instagram likes\", create two tabs links and data.",{"id":1691,"title":1692,"titles":1693,"content":1694,"level":15},"\u002Fguides\u002Fscrape-likes-from-instagram-posts#install-the-instagram-like-scraper","Install the Instagram like scraper",[1683],"To install this Insta scraper 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1696,"title":1697,"titles":1698,"content":1699,"level":15},"\u002Fguides\u002Fscrape-likes-from-instagram-posts#configure-your-instagram-like-scraper-in-5-easy-steps","Configure your Instagram Like scraper in 5 easy steps",[1683],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the post links in it.2.0 Loop through data2.1 Go to page: www.instagram.comEnter URL: Click \"Insert data\", select [google-sheet-data], then choose the column with the post links.2.2 Click element: Click on likePreconfigured.2.3 Get data from bot's current page: Scrape likesPreconfigured.2.4 Append or merge data: Post link + likesData A: Click \"Insert data\", select post URL in [google-sheet-data].Data B: Click \"Insert data\", select [scrape-data].2.5 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.2.6 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.",{"id":1701,"title":1702,"titles":1703,"content":1704,"level":15},"\u002Fguides\u002Fscrape-likes-from-instagram-posts#run-your-instagram-like-scraper","Run your Instagram like scraper",[1683],"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 add steps to login.",{"id":1706,"title":33,"titles":1707,"content":35,"level":15},"\u002Fguides\u002Fscrape-likes-from-instagram-posts#customize-your-template",[1683],{"id":1709,"title":38,"titles":1710,"content":1711,"level":15},"\u002Fguides\u002Fscrape-likes-from-instagram-posts#troubleshooting",[1683],"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 add steps to login. Like button not clicked?\nIn Step 2.2 – Click element: Click on like, reselect the like button on a post.No results scraped?\nIn Step 2.3 – Get data from bot's current page: Scrape likes, check that the custom selectors used are correct:'[role=\"dialog\"] span div' and '[role=\"dialog\"] [role=\"link\"]'.No data written?\nIn Step 2.5 – Write data to a Google Sheet, make sure Data is set to [appended-data]. We offer excellent customer support. If you need help, get in touch.\nIntrested in automating Instagram posting, learn more read this full in-depth guide on automating posting to Instagram.",{"id":1713,"title":1714,"titles":1715,"content":1716,"level":9},"\u002Fguides\u002Fscrape-links-export-to-csv","How to extract links and write to a CSV",[],"Learn how to make a bot that will scrape links from a webpage then export them into a CSV. Learn how to scrape links from a webpage into a CSV saved to your downloads folder by combing a few steps using our [builder.](\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fbuilder",{"id":1718,"title":518,"titles":1719,"content":1720,"level":15},"\u002Fguides\u002Fscrape-links-export-to-csv#start-from-blank-adding-the-following-steps",[1714],"In the axiom.ai Chrome extension dashboard, click \"New Automation\" and then select \"Add first step\". Use the step finder to add the steps outlined below. Step 1.0 Get a list of links to pages from a URLURL: Enter the URL of the page from which to scrape links.Select: Choose the links you wish to scrape.Find pager (optional): Select the \"Next\" button for pagination if present.Max results: Set the maximum number of links to scrape.Step 2.0 Export to CSVExport to CSV: Click Insert data, then select scraped-link-data.File name: Name your CSV file.",{"id":1722,"title":84,"titles":1723,"content":1724,"level":15},"\u002Fguides\u002Fscrape-links-export-to-csv#wrapping-up",[1714],"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.",{"id":1726,"title":1727,"titles":1728,"content":1729,"level":9},"\u002Fguides\u002Fscrape-links-from-a-website","How to scrape links from a website into a Google Sheet",[],"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. 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. We recommend scraping links with one Axiom then scraping the pages with another see this template.",{"id":1731,"title":12,"titles":1732,"content":1733,"level":15},"\u002Fguides\u002Fscrape-links-from-a-website#get-started-create-your-google-sheet",[1727],"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut \"sheet.new\", presuming you already have an account. Name your sheet something like 'Link Scraper’ and set up a tab called \"Links\".",{"id":1735,"title":1736,"titles":1737,"content":1738,"level":15},"\u002Fguides\u002Fscrape-links-from-a-website#install-the-link-scraper","Install the link scraper",[1727],"To install this Web scraper template 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. Once installed, click  \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1740,"title":1741,"titles":1742,"content":1743,"level":15},"\u002Fguides\u002Fscrape-links-from-a-website#configure-your-link-scraper-in-a-minute","Configure your Link scraper in a minute",[1727],"Step 1.0 Get a list of links to pages from a URLURL: Enter the URL of the page you want to scrape.Select: Point and click to select the links you wish to scrape.Find pager (if any): Select the \"Next\" button if the page is paginated.Max Results: Set the number of links you wish to scrape.Step 2.0 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created.DATA: Select [scraped-link-data].Write options: Set to \"Add to existing data\".",{"id":1745,"title":1746,"titles":1747,"content":1748,"level":15},"\u002Fguides\u002Fscrape-links-from-a-website#run-your-link-scraper","Run your link scraper",[1727],"We suggest running a test first, setting max-results to 10, and reviewing the data.",{"id":1750,"title":33,"titles":1751,"content":35,"level":15},"\u002Fguides\u002Fscrape-links-from-a-website#customize-your-template",[1727],{"id":1753,"title":38,"titles":1754,"content":1755,"level":15},"\u002Fguides\u002Fscrape-links-from-a-website#troubleshooting",[1727],"We recommend you watch the video to troubleshoot. Selectors fail to find content?\nIn Step 1.0 – Get data from bot's current page, try re-selecting or use custom selectors.Slow running scraper?\nIn the same step, toggle Configure scraper, then set No. of retry... to 0.Want to speed the scraper up?\nSet Max Results to match the number of columns you selected to scrape.No data written?\nIn Step 2.0 – Write Data to a Google Sheet, check that Data is set to [scraped-link-data].Keeps overwriting data?\nMake sure Add to existing is selected in the same step. We offer excellent customer support. If you need help, get in touch.",{"id":1757,"title":1758,"titles":1759,"content":1760,"level":9},"\u002Fguides\u002Fscrape-spotify-webplayer","How to Scrape Spotify Discography: Step-by-Step",[],"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. 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.",{"id":1762,"title":94,"titles":1763,"content":1764,"level":15},"\u002Fguides\u002Fscrape-spotify-webplayer#get-started-set-up-your-google-sheet",[1758],"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 \"Spotify scraper\". Set up two tabs in Google Sheets: one for artist profile links and another for scraped data.",{"id":1766,"title":1767,"titles":1768,"content":1769,"level":15},"\u002Fguides\u002Fscrape-spotify-webplayer#install-the-spotify-discography-scraper","Install the Spotify discography scraper",[1758],"To install this Spotify Discography Scraper 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app. 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the artist profile links.2.0 Loop through data2.1 Go to page: Artist pageEnter URL: Click Insert data, select [google-sheet-data], then append \u002Fdiscography\u002Fall after the token.2.2 – 2.3 ^2.4 Loop through data: Album links2.4.1 – 2.4.2 ^2.4.3 Write data to a Google SheetDATA: Ensure this is set to [scraped-data].2.5 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with artist links.^ Preconfigured",{"id":1771,"title":1772,"titles":1773,"content":1774,"level":15},"\u002Fguides\u002Fscrape-spotify-webplayer#run-your-spotify-discography-scraper","Run your Spotify discography scraper",[1758],"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 add steps to login.",{"id":1776,"title":33,"titles":1777,"content":1778,"level":15},"\u002Fguides\u002Fscrape-spotify-webplayer#customize-your-template",[1758],"Like all Axiom templates, 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.",{"id":1780,"title":38,"titles":1781,"content":1782,"level":15},"\u002Fguides\u002Fscrape-spotify-webplayer#troubleshooting",[1758],"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 add steps to login. Artist page not loading?\nIn Step 2.1 – Go to page: Artist page, check that the URL ends with \u002Fdiscography\u002Fall after the [google-sheet-data] token.Display not being changed to grid format?\nIn Step 2.2 – Click element: Grid layout, reselect the grid icon from the artist page.Element not found?\nIn 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.Album links not loading?\nIn Step 2.4.1 – Go to page: Album, confirm that Enter URL is set with [link-data?*&0].No elements found?\nIn Step 2.4.2 – Get data from bot's current page: Scrape Album, reselect data from within an album page.Scraped data not writing?\nIn Step 2.4.3 – Write data to a Google Sheet, check that the correct sheet and tab are selected.Bot scrapes same artist every loop?\nIn Step 2.5 – Delete rows from a Google Sheet, confirm the correct sheet tab (with artist links) is selected. We offer excellent customer support. If you need help, get in touch.",{"id":1784,"title":1785,"titles":1786,"content":1787,"level":9},"\u002Fguides\u002Fslack","How to automate Slack with axiom.ai",[],"Learn how to trigger a Slack Workflow using an axiom.ai automation to send messages or automatically perform tasks within your automations 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.",{"id":1789,"title":48,"titles":1790,"content":1791,"level":15},"\u002Fguides\u002Fslack#getting-started",[1785],"To get started, you'll need to have a Slack account that has access to Slack Workflow Builder. You'll also need to have the axiom.ai extension installed and be logged in.",{"id":1793,"title":1794,"titles":1795,"content":1796,"level":15},"\u002Fguides\u002Fslack#trigger-a-slack-workflow-with-an-axiomai-automation","Trigger a Slack workflow with an axiom.ai automation",[1785],"Learn how to trigger a Slack workflow from an axiom.ai automation. Create Slack workflow: Head to the Slack app and open the Workflow Builder.Create workflow: Click \"+ New workflow\" to get started.Start the workflow: Click \"Choose an event\" to select a workflow trigger, select \"From a webhook\".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.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.Save: Click \"Finish up\" to save your workflow, follow their steps and then click \"Publish\" to publish your workflow.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. 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. Trigger webhook: Add a Trigger webhook step to your automation.\nEndpoint: Paste the \"Web request URL\" you copied from Slack.Payload: Match the format shown in your Slack workflow.\nTo check the structure, open your workflow and click on \"Starts with a webhook\".Use the \"Insert Data\" option in Axiom to add tokens from your automation into the payload.",{"id":1798,"title":1799,"titles":1800,"content":1801,"level":61},"\u002Fguides\u002Fslack#triggering-a-slack-workflow-with-run-notifications","Triggering a Slack Workflow with Run Notifications",[1785,1794],"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. Then, head into your axiom.ai automation and follow the steps below: Open your automation: Open the Axiom automation you want to configure.Go to settings: Navigate to Settings → Set up notifications.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.Enable webhook notifications: Turn on Notify by webhook.Enter webhook URL: Paste the Web request URL from the Slack workflow setup. Tip: Using the Add error metadata 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 How to debug. To pass custom data to your Slack Workflow, we would still recommend using the Trigger webhook step method described in the section above. These can be used together but we recommend referring to Slack's Rate Limit documentation for their API rate limits. To learn more about Run Notifications, see the Run Notifications documentation.",{"id":1803,"title":79,"titles":1804,"content":1805,"level":15},"\u002Fguides\u002Fslack#testing-your-workflow",[1785],"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. Contact us if you are unsure of the errors that you are experiencing. 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.",{"id":1807,"title":490,"titles":1808,"content":1809,"level":15},"\u002Fguides\u002Fslack#examples",[1785],"Let's dive into some example use cases.",{"id":1811,"title":1812,"titles":1813,"content":1814,"level":61},"\u002Fguides\u002Fslack#automate-the-creation-of-a-daily-spreadsheet","Automate the creation of a daily spreadsheet",[1785,490],"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: Create Slack workflow: Head to the Slack app and open the Workflow Builder.Create workflow: Click \"+ New workflow\" to get started.Start the workflow: Click \"Choose an event\" to select a workflow trigger, select \"From a webhook\".Variables: To set up variables, click \"Set up variables\" - add two \"test\" variables, one called \"date\" and another called \"url\".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.Construct message: Create a message you'd like to send to the team, use the \"{} Insert a variable\" button to insert variables.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.Save: Click \"Finish up\" to save your workflow, follow their steps and then click \"Publish\" to publish your workflow.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. Now, open your axiom.ai extension and follow the steps below: Create a new automation: Open the extension and click \"+ New Automation\" to get started.Get date: To get the current date use the Date and time step. Select the format from in the step.Create Google Sheet: Use the Create a new Google Sheet step to create a new spreadsheet, use the output from the \"Date and time\" step to construct your \"Sheet name\".Trigger webhook: Add a Trigger webhook step to your automation, add the \"Web request URL\" from Slack to the \"Endpoint\" input.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.Schedule: If your plan supports it, navigate to \"Settings\", then \"Schedule\" to set up a schedule to run daily, or more frequently.",{"id":1816,"title":84,"titles":1817,"content":1818,"level":15},"\u002Fguides\u002Fslack#wrapping-up",[1785],"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.",{"id":1820,"title":1821,"titles":1822,"content":1823,"level":9},"\u002Fguides\u002Fsupabase","How to automate Supabase with axiom.ai",[],"Learn how to automatically send data to your Supabase databases and trigger your axiom.ai automations using triggers. 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.",{"id":1825,"title":48,"titles":1826,"content":1827,"level":15},"\u002Fguides\u002Fsupabase#getting-started",[1821],"To get started, you will need to have the following steps completed: Sign up to SupabaseCreate a database and a table: Supabase | Tables and DataRetrieve your project URL: Go to Project settings → API → Project URLRetrieve your API key: Go to Project settings → API → Project API Keys Throughout this guide we will be using a \"Customers\" table, any code provided will need to be modified to your specific use case.",{"id":1829,"title":1830,"titles":1831,"content":1832,"level":15},"\u002Fguides\u002Fsupabase#working-with-supabase-data-in-axiomai","Working with Supabase data in axiom.ai",[1821],"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.",{"id":1834,"title":1835,"titles":1836,"content":1837,"level":61},"\u002Fguides\u002Fsupabase#write-data-to-a-supabase-table","Write data to a Supabase table",[1821,1830],"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. To get started, add a Write Javascript 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. \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>\"; Next, we will add a helper function that ensures that your data is formatted in a way that Supabase expects: 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} 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 result in later steps of your automation, you'll need to return this value. 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} To use this as is, call the sendToSupabase function at the end of your script. sendToSupabase(); 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 sendToSupabase function: \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} To use this, call the sendToSupabase function at the end of your script. sendToSupabase();",{"id":1839,"title":1840,"titles":1841,"content":1842,"level":61},"\u002Fguides\u002Fsupabase#read-data-from-a-supabase-table","Read data from a Supabase table",[1821,1830],"Reading data from a Supabase table allows you to make use of this data within your axiom.ai automations. To get started, add a Write Javascript step to your automation. 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. \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>\"; Your supabase_url variable will need to be slightly modified, depending on what data you are looking to return, for example: Return all columns: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?select=*\"Return specific columns: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?select=some_column,other_column\"Filtered: \"\u003CPROJECT_URL>\u002Frest\u002Fv1\u002F\u003CTABLE_NAME>?id=eq.1\", learn more. Next, we will want to retrieve the data from your Supabase database. You won't need to make any changes to this code: 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(); The data 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: 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(); Your data will now be stored in the code-data data token that is output from the \"Write Javascript\" step. Learn more about How to pass data between steps in your automation. Use the Loop through data step to loop through the rows of data returned.",{"id":1844,"title":1845,"titles":1846,"content":1847,"level":15},"\u002Fguides\u002Fsupabase#triggering-an-axiomai-automation-from-a-supabase-database-event","Triggering an axiom.ai automation from a Supabase database event",[1821],"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 pricing for more details. To get started, add a Receive data from another app step to your automation - we recommend adding this as the first step of your automation. For more information on setting test data, see Receive data from another app. 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: HTTP Request - Method: Set to 'POST'.HTTP Request - URL: the axiom.ai endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger.Headers: often pre-configured, 'Content-Type': 'application\u002Fjson'. 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.",{"id":1849,"title":79,"titles":1850,"content":1851,"level":15},"\u002Fguides\u002Fsupabase#testing-your-workflow",[1821],"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 Write data to a Google Sheet step. 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.",{"id":1853,"title":84,"titles":1854,"content":1855,"level":15},"\u002Fguides\u002Fsupabase#wrapping-up",[1821],"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! Information accurate as of November 2024. 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}",{"id":1857,"title":1858,"titles":1859,"content":1860,"level":9},"\u002Fguides\u002Ftadabase","How to automate Tadabase with axiom.ai",[],"Learn how to automatically send data to your Tadabase databases and trigger your axiom.ai automations using triggers. 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.",{"id":1862,"title":48,"titles":1863,"content":1864,"level":15},"\u002Fguides\u002Ftadabase#getting-started",[1858],"To get started, you will need to have the following steps completed: Sign up to Tadabase.Create a new application.Create a new data table.Sign up to Tadabase's Webhook Catcher (using the same email as your Tadabase account).The \"App ID\", \"API Key\" and \"API Secret\" for the application (\"Settings\" → \"API Keys\" → \"Generate New Key\"). More details on how to do the steps above can be found in the Getting Started with Tadabase documentation.",{"id":1866,"title":1867,"titles":1868,"content":1869,"level":15},"\u002Fguides\u002Ftadabase#working-with-tadabase-data-in-axiomai","Working with Tadabase data in axiom.ai",[1858],"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.",{"id":1871,"title":1872,"titles":1873,"content":1874,"level":61},"\u002Fguides\u002Ftadabase#creating-a-new-webhook","Creating a new webhook",[1858,1867],"Tadabase has a great guide on how to set up your application to be ready to receive webhooks, you'll find their Incoming Webhooks documentation on their website. We recommend following this before continuing this guide. You should end up with a webhook URL similar to the following: https:\u002F\u002Fcatcher.tadabase.io\u002Fwebhook\u002F\u003CID>. 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.",{"id":1876,"title":1877,"titles":1878,"content":1879,"level":61},"\u002Fguides\u002Ftadabase#creating-a-single-record","Creating a single record",[1858,1867],"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: Add a Trigger webhook step to your automation.Add the webhook URL in the Endpoint field.Configure the Payload field based on your data table fields. See an example below. {\n    \"name\": \"Jane Doe\",\n    \"email\": \"example@axiom.ai\"\n} Remember, you can use the \"Insert data\" button to insert data tokens from your automation, learn more in our passing data between steps documentation.",{"id":1881,"title":1882,"titles":1883,"content":1884,"level":61},"\u002Fguides\u002Ftadabase#creating-multiple-records","Creating multiple records",[1858,1867],"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: Add a Trigger webhook step to your automation.Add the webhook URL in the Endpoint field.Configure the Payload field based on your data table fields. See an example below. {\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} The \u003CMAPPING_FIELD> should correspond with the field that you inserted into the \"Multi-value Webhook\" field in the field mapping section of your webhook. Remember, you can use the \"Insert data\" button to insert data tokens from your automation, learn more in our passing data between steps documentation.",{"id":1886,"title":1887,"titles":1888,"content":1889,"level":61},"\u002Fguides\u002Ftadabase#updating-a-record","Updating a record",[1858,1867],"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\". Then, in your axiom.ai automation set up your automation as normal, once you are ready to send your data, add the following step: Add a Trigger webhook step to your automation.Add the webhook URL in the Endpoint field.Configure the Payload field based on your data table fields. See an example below. {\n    \"id\": \"4MXQJdrZ6v\",\n    \"name\": \"John Smith\"\n} Remember, you can use the \"Insert data\" button to insert data tokens from your automation, learn more in our passing data between steps documentation.",{"id":1891,"title":79,"titles":1892,"content":1893,"level":15},"\u002Fguides\u002Ftadabase#testing-your-workflow",[1858],"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. If your data has not been added, navigate to your webhook in the Tadabase's Webhook Catcher where there is a section that details failed webhook requests - review these failed requests for more information on what the error may be. If there are errors within your automation, you'll find these in the builder, or in your run reports. Learn more about How to Debug",{"id":1895,"title":84,"titles":1896,"content":1897,"level":15},"\u002Fguides\u002Ftadabase#wrapping-up",[1858],"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. 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. 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);}",{"id":1899,"title":1900,"titles":1901,"content":1902,"level":9},"\u002Fguides\u002Ftransparency-report","How to scrape Google Transparency reports",[],"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. The 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. In this guide, you'll learn how to scrape copyright data from these reports into a Google Sheet using two web scrapers: The first web scraper will input search terms, extract links to \"Copyright Owners\", and save them to a Google Sheet.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. Click to download the first and 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, watch this video.",{"id":1904,"title":48,"titles":1905,"content":1906,"level":15},"\u002Fguides\u002Ftransparency-report#getting-started",[1900],"To begin, create a Google Sheet and add search terms to input into the \"Search\" field. 1. Create a new Google Sheet: If you're logged into Google, type sheet.new in your browser to quickly create a new sheet.2. Set up tab one: Add your search terms to the first tab.3. Set up tab two: Name this second tab \"Copyright Owners.\"4. Set up tab three: Name this third tab \"Domain and Reporting Data.\"",{"id":1908,"title":1909,"titles":1910,"content":1911,"level":15},"\u002Fguides\u002Ftransparency-report#how-to-build-a-web-scraper-to-extract-copyright-owners","How to build a web scraper to extract 'copyright owners'",[1900],"This web scraper extracts data from the 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 axiom.ai and click \"New automation\" to use the no-code bot builder for creating the Google scraper. Then, click \"Add first step\" to begin. Download the template we created for this scraper. Click to learn how to upload it. 1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created in the \"Spreadsheet\" field. Once found, click to select.Sheet name: Choose a sheet tab or leave blank to use the first tab.2.0 Go to pageEnter URL: Insert this URL.\n  \n3.0 Loop through dataLoop through data: Click 'Insert Data' and select google-sheet-data. The loop step will now iterate through the URLs in the Google Sheet.3.1 Enter TextText: Click 'Insert Data' and select google-sheet-data to pass the search term from the sheet.Select column: Choose column 'A' in the preview.\n  \n3.2 Press Key(s)Key: Press 'Record', then 'Return'.3.3 `",{"id":1913,"title":1914,"titles":1915,"content":1916,"level":9},"\u002Fguides\u002Ftwitter-direct-messages","How to automate Twitter X direct messages",[],"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. 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.",{"id":1918,"title":94,"titles":1919,"content":1920,"level":15},"\u002Fguides\u002Ftwitter-direct-messages#get-started-set-up-your-google-sheet",[1914],"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut \"sheet.new\", presuming you already have an account. Name your sheet something like \"Twitter Messages\" then add profile links.",{"id":1922,"title":1923,"titles":1924,"content":1925,"level":15},"\u002Fguides\u002Ftwitter-direct-messages#install-the-twitter-x-direct-messages-bot","Install the Twitter X direct messages bot",[1914],"To install this Twitter X direct messages 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1927,"title":1928,"titles":1929,"content":1930,"level":15},"\u002Fguides\u002Ftwitter-direct-messages#configure-your-twitter-x-direct-messages-bot","Configure your Twitter X direct messages bot",[1914],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the profile links.2.0 Loop through data2.1 Go to pageEnter URL: Click Insert data, select [google-sheet-data].2.2 Get data from bot's current page ^2.3 If condition: Check for Message button ^\n2.3.1 – 2.3.2 ^2.3.3 Enter Text: MessageText: Click Insert data, select message from Google Sheet or type directly into the input.2.3.4 Press Key(s): Send message ^2.4 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab with the posts in it.^ Preconfigured",{"id":1932,"title":1933,"titles":1934,"content":1935,"level":15},"\u002Fguides\u002Ftwitter-direct-messages#run-your-twitter-x-direct-messages-bot","Run your Twitter X direct messages bot",[1914],"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, add steps to login.",{"id":1937,"title":33,"titles":1938,"content":35,"level":15},"\u002Fguides\u002Ftwitter-direct-messages#customize-your-template",[1914],{"id":1940,"title":38,"titles":1941,"content":1942,"level":15},"\u002Fguides\u002Ftwitter-direct-messages#troubleshooting",[1914],"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 add steps to login. Profile pages not loading?\nIn Step 2.1 – Go to page, check you have inserted the data correctly.No data being found?\nIn Step 2.2 – Get data from bot's current page, reselect an element that wraps around the message button.Not running X in English?\nIn Step 2.3 – If condition: Check for Message button, change the condition to check for 'Message' in your native language.Data to check not set?\nIn the same step, make sure it is set to [scrape-data].Element not found?\nIn Step 2.3.1 – Click Element: Message, reselect the message button. Try using the text selector.No message being added?\nIn Step 2.3.3 – Enter Text: Message, check you have inserted data or try reselecting the text input field. We offer excellent customer support. If you need help, get in touch.",{"id":1944,"title":1945,"titles":1946,"content":1947,"level":9},"\u002Fguides\u002Fupload-files-from-a-google-sheet","How to automate uploading files",[],"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. 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.",{"id":1949,"title":12,"titles":1950,"content":1951,"level":15},"\u002Fguides\u002Fupload-files-from-a-google-sheet#get-started-create-your-google-sheet",[1945],"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 'Uploads’, add file paths into column A.",{"id":1953,"title":1954,"titles":1955,"content":1956,"level":15},"\u002Fguides\u002Fupload-files-from-a-google-sheet#install-the-file-upload-bot","Install the File upload bot",[1945],"To install this File upload 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. Once installed, click 'Start'. axiom.ai will guide you through the steps you need to configure in the app.",{"id":1958,"title":1959,"titles":1960,"content":1961,"level":15},"\u002Fguides\u002Fupload-files-from-a-google-sheet#configure-your-file-upload-bot","Configure your File upload bot",[1945],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab with your file paths in.2.0 Loop through data2.1 Go to pageEnter URL: Please enter the URL of the website where you want to upload your file.2.2 Upload a fileFile Input Field: Click 'Select' to choose the form element to upload the file to.File Path: Input the file paths by clicking 'Insert data', select google-sheet-data, then select the column with the file paths.2.3 Wait stepWait time:: Pause the bot to allow the file upload to complete. Set a wait time appropriate for the file size.",{"id":1963,"title":1964,"titles":1965,"content":1966,"level":15},"\u002Fguides\u002Fupload-files-from-a-google-sheet#run-your-file-upload-bot","Run your File upload bot",[1945],"We suggest running a test first, stopping the bot after a few uploads and checking the files uploaded.",{"id":1968,"title":33,"titles":1969,"content":1970,"level":15},"\u002Fguides\u002Fupload-files-from-a-google-sheet#customize-your-template",[1945],"Like all Axiom templates, you can use our no-code bot builder to customize any bot according to your requirements. We have other upload file steps you can use that work in the cloud and on desktop. Take a look at the upload to Google Drive step.",{"id":1972,"title":38,"titles":1973,"content":1974,"level":15},"\u002Fguides\u002Fupload-files-from-a-google-sheet#troubleshooting",[1945],"We recommend you watch the video to troubleshoot. Selectors fail to find the element?\nTry re-selecting or using custom selectors.Files do not upload?\nCheck the folder permission on your computer.Upload does not complete?\nIncrease the pause, to allow the file upload to complete. We offer excellent customer support. If you need help, get in touch.",{"id":1976,"title":1977,"titles":1978,"content":1979,"level":9},"\u002Fguides\u002Fusecase","Use case guides",[],"Real-world automation examples with ready-to-use templates for scraping and automating tasks across popular sites and tools. 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.",{"id":1981,"title":1982,"titles":1983,"content":1984,"level":9},"\u002Fguides\u002Fweb-scraping-looping-through-pages","How to scrape links in a Google Sheet",[],"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. 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.",{"id":1986,"title":12,"titles":1987,"content":1988,"level":15},"\u002Fguides\u002Fweb-scraping-looping-through-pages#get-started-create-your-google-sheet",[1982],"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 Web Scraper and set up a tab called \"Page links\". Add another tab called \"Data\".",{"id":1990,"title":1991,"titles":1992,"content":1993,"level":15},"\u002Fguides\u002Fweb-scraping-looping-through-pages#install-the-web-scraper","Install the Web scraper",[1982],"To install this Web scraper 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. Once installed, click \"Start\". axiom.ai will guide you through the steps you need to configure in the app.",{"id":1995,"title":1996,"titles":1997,"content":1998,"level":15},"\u002Fguides\u002Fweb-scraping-looping-through-pages#configure-your-web-scraper-in-minutes","Configure your Web scraper in minutes",[1982],"1.0 Read data from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the sheet tab called \"Amazon product links\".2.0 Loop through data2.1 Go to pageEnter URL: Click 'Insert Data', select google-sheet-data, and choose the column with the links in it.2.2 Get data from bot's current pageSelect: Point and click to choose the data you wish to scrape.Max Results: Set to match the number of columns of data you selected to scrape.2.3 Write data to a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created.DATA: Select [scrape-data].Clear data before writing | Add to existing data: Set this option to \"Add to existing\".2.4 Delete rows from a Google SheetSpreadsheet: Search for the Google Sheet you created. Once found, click to select.Sheet name: Choose the tab you created for links.First row: Set to 1.Last row: Set to 1.",{"id":2000,"title":2001,"titles":2002,"content":2003,"level":15},"\u002Fguides\u002Fweb-scraping-looping-through-pages#run-your-web-scraper","Run your Web scraper",[1982],"We suggest running a test first, stopping the bot after a few loops, and reviewing the scraped data.",{"id":2005,"title":33,"titles":2006,"content":35,"level":15},"\u002Fguides\u002Fweb-scraping-looping-through-pages#customize-your-template",[1982],{"id":2008,"title":38,"titles":2009,"content":2010,"level":15},"\u002Fguides\u002Fweb-scraping-looping-through-pages#troubleshooting",[1982],"We recommend you watch the video to troubleshoot. Want to set an amount of loops?\nIn Step 1.0, set a Last Cell. For example, AE100 will scrape 100 rows.Selectors fail to find content?\nIn Step 2.2 – Get data from bot's current page, try reselecting or using custom selectors.Slow running scraper?\nIn the same step, toggle Configure scraper, then set No. of retry... to 1.Want to speed the scraper up?\nSet Max Results to match the number of columns you selected to scrape.No data written?\nIn Step 2.3 – Write Data to a Google Sheet, check that Data is set to [scrape-data].Keeps overwriting data?\nMake sure Add to existing is selected in the same step. We offer excellent customer support. If you need help, get in touch.\nIf you are keen to learn more about scraping, take a look at these guides: web scraping with an AI, Killer-problems with web scrapers and how to use Custom CSS selectors.",{"id":2012,"title":2013,"titles":2014,"content":2015,"level":9},"\u002Fguides\u002Fwebhooks","How to use webhooks with axiom.ai",[],"Learn how to use webhooks to send or receive data within your axiom.ai automations. 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 guides for more specific guides.",{"id":2017,"title":48,"titles":2018,"content":2019,"level":15},"\u002Fguides\u002Fwebhooks#getting-started",[2013],"To get started with triggering a webhook using an automation, you will need the following from the axiom.ai Chrome extension: API key: The API key is found on the dashboard.Automation name: Get the name of the automation you wish to trigger.Endpoint: The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger. 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.",{"id":2021,"title":2022,"titles":2023,"content":2024,"level":15},"\u002Fguides\u002Fwebhooks#triggering-a-webhook-from-an-axiomai-automation","Triggering a webhook from an axiom.ai automation",[2013],"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: Endpoint: The endpoint that needs to be triggered by your automation.Payload: The payload format that is required.",{"id":2026,"title":2027,"titles":2028,"content":2029,"level":61},"\u002Fguides\u002Fwebhooks#low-code","Low-code",[2013,2022],"The Trigger webhook step can be used in order to trigger a webhook from your automations. Follow the steps below to get started: Add a Trigger webhook step.Enter the \"Endpoint\".Enter the \"Payload\". Remember, the \"Insert data\" option can be used to dynamically input data from your automation into your payload, see Passing data between steps for more information.",{"id":2031,"title":2032,"titles":2033,"content":2034,"level":61},"\u002Fguides\u002Fwebhooks#javascript","JavaScript",[2013,2022],"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: Allowing you to receive additional data, from a database, for example.Having more control over headers - for example, authorization headers.Being able to parse the response.Being able to use the response to automatically retry the call in the event of a rate limit being hit. To get started, add a Write Javascript step to your automation and use the fetch method. See the example below to get started. 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} Learn more about the fetch function in the Mozilla Using the Fetch API documentation. Remember, the \"Insert data\" option can be used to dynamically input data from your automation into your payload, see Passing data between steps for more information.",{"id":2036,"title":2037,"titles":2038,"content":2039,"level":15},"\u002Fguides\u002Fwebhooks#triggering-an-axiomai-automation-from-a-webhook","Triggering an axiom.ai automation from a webhook",[2013],"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: 1.0 Receive data from a webhook: Add a Receive data from a webhook step.2.0 Test data: Configure the test data input with the expected payload from the third-party application. 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. Note, triggering automations from webhooks is only available in specific plans with the 'webhooks' feature.",{"id":2041,"title":79,"titles":2042,"content":2043,"level":15},"\u002Fguides\u002Fwebhooks#testing-your-workflow",[2013],"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. 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. Additionally, the resources below may be helpful in debugging your automation: How to debugCommon errorsHandling errors",{"id":2045,"title":84,"titles":2046,"content":2047,"level":15},"\u002Fguides\u002Fwebhooks#wrapping-up",[2013],"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 Supabase 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 Reddit community. Can't get an API call to work? Ask an expert in our Reddit community. 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);}",{"id":2049,"title":2050,"titles":2051,"content":2052,"level":9},"\u002Fguides\u002Fworkflow","Workflow guides",[],"Step-by-step tutorials for common browser automation tasks in axiom.ai—scraping loops, monitoring pages, data entry, file flows, and webhooks. 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.",{"id":2054,"title":2055,"titles":2056,"content":2057,"level":9},"\u002Fguides\u002Fzapier","How to trigger Zapier Zaps using axiom.ai",[],"How to build an automation that scrapes data from a webpage and connects to Zapier via a webhook. 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.",{"id":2059,"title":48,"titles":2060,"content":482,"level":15},"\u002Fguides\u002Fzapier#getting-started",[2055],{"id":2062,"title":2063,"titles":2064,"content":2065,"level":15},"\u002Fguides\u002Fzapier#triggering-a-zap-using-an-axiomai-automation","Triggering a Zap using an axiom.ai automation",[2055],"To get started, we are going to assume that you have an automation created. Create Zap - Create a new Zap by navigating to Zapier, and clicking \"+ Create\".Add trigger - Click \"Trigger\", then select \"Webhooks by Zapier\". See the section below for more information on configuring this trigger.Trigger webhook - In axiom.ai, add a Trigger webhook step to your automation. Input the URL from the \"your webhook URL\" section in Zapier. Learn more about configuring the \"Webhooks by Zapier\" trigger: Set the \"trigger event\" to \"catch raw webhook\", press continue.Save the URL in the \"your webhook URL\" section for later. To use data within your Zap, you'll need to first process the data: 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.Configure - Follow the instructions below to configure the \"Formatter by Zapier\" action. To configure the \"Formatter by Zapier\" step, follow the steps below: Action event - Set to \"text\".Transform - Set to \"split text\".Input - Click \"+\" and set to \"raw body\".Separator - Click into the field and set to \"single speech mark\".Segment index - Set to \"all (as separate fields)\".Continue - click continue.Test - Click \"test step\".",{"id":2067,"title":79,"titles":2068,"content":2069,"level":15},"\u002Fguides\u002Fzapier#testing-your-workflow",[2055],"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. If the desired results have not been achieved, review the Run Reports within axiom.ai, or the Zap runs section within Zapier.",{"id":2071,"title":490,"titles":2072,"content":492,"level":15},"\u002Fguides\u002Fzapier#examples",[2055],{"id":2074,"title":2075,"titles":2076,"content":2077,"level":61},"\u002Fguides\u002Fzapier#sending-scraper-data-from-an-axiomai-automation-to-zapier-for-processing","Sending scraper data from an axiom.ai automation to Zapier for processing",[2055,490],"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. Scrape - Create a new axiom.ai automation, add a scraping step. In this example, we will be using the Get data from a URL step.Trigger webhook - Following the instructions above, configure your Zap to be triggered by incoming webhooks. Add a Trigger webhook step and use the \"Insert data\" option to insert the [scrape-data] token. Follow the steps from the Triggering a Zap using an axiom.ai automation to learn how to process the data that you send to your Zap.",{"id":2079,"title":2080,"titles":2081,"content":2082,"level":61},"\u002Fguides\u002Fzapier#write-data-to-excel","Write data to Excel",[2055,490],"To write data to Excel, follow the steps in 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: Excel - Search for \"Microsoft Excel\" and add a new step to your Zap.Action event - Set this to \"Add Row\".Set up - Follow the instructions in the Zap to connect your account and configure your step.Configure - To configure your data, head into the \"Configure\" tab. Click the \"+\" button beside the \"Column\" inputs to select your variables. To test, trigger your automation within axiom.ai",{"id":2084,"title":84,"titles":2085,"content":2086,"level":15},"\u002Fguides\u002Fzapier#wrapping-up",[2055],"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.",{"id":2088,"title":2089,"titles":2090,"content":2091,"level":9},"\u002Fguides\u002Fzapier-forms","How to automate data entry without an API using Zapier",[],"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. This Zapier data entry template is triggered by a webhook that passes data in a 2D array from our 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 no API integration option.",{"id":2093,"title":2094,"titles":2095,"content":2096,"level":15},"\u002Fguides\u002Fzapier-forms#get-started-set-up-your-zap","Get started: Set up your Zap",[2089],"In fact, we recommend not setting up your Zap first. Instead, prioritize creating and thoroughly testing your bot. Utilize the 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 Zapier documentation page.",{"id":2098,"title":2099,"titles":2100,"content":2101,"level":15},"\u002Fguides\u002Fzapier-forms#install-the-zapier-data-entry-bot","Install the Zapier data entry bot",[2089],"To install this Zapier 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. Once installed, click  Start. axiom.ai will guide you through the steps you need to configure in the app.",{"id":2103,"title":2104,"titles":2105,"content":2106,"level":15},"\u002Fguides\u002Fzapier-forms#configure-your-zapier-data-entry-bot-in-just-a-few-steps","Configure your Zapier data entry bot in just a few steps",[2089],"We've provided a set of example steps within Step 2.0 - Loop through data. You can further customize this bot by adding additional steps within this loop to suit your specific needs. 1.0 Receive data from another app: Toggle on Test data and input: \"[[Row 1 colA, Row 1 colB, Row 1 colC], Row 2 colA, Row 2 colB, Row 2 colC]\".2.0 Loop through data.\n2.1 Enter Text: Set Select to the input field and Text to \"Insert Data\", select [webhook-data].2.2 Enter Text: Set Select to the input field and Text to \"Insert Data\", select [webhook-data].2.3 Click Element: Set Select to the submit form button.",{"id":2108,"title":2109,"titles":2110,"content":2111,"level":15},"\u002Fguides\u002Fzapier-forms#run-your-zapier-data-entry-bot","Run your Zapier data entry bot",[2089],"Test your bot with sample data before proceeding to test your Zapier trigger.",{"id":2113,"title":33,"titles":2114,"content":2115,"level":15},"\u002Fguides\u002Fzapier-forms#customize-your-template",[2089],"Like all Axiom Guides, you can use our no-code bot builder to customize any bot according to your requirements.",{"id":2117,"title":38,"titles":2118,"content":2119,"level":15},"\u002Fguides\u002Fzapier-forms#troubleshooting",[2089],"We recommend you watch the video to troubleshoot. We offer excellent customer support. If you need help, get in touch.\nTo learn more about using triggering Axiom with Zaps read our Zapier page.",{"id":2121,"title":2122,"titles":2123,"content":2124,"level":9},"\u002Fguides\u002Fzapier-tables","How to automate Zapier Tables with axiom.ai",[],"Learn how to automatically send data to your Zapier Tables databases and trigger your axiom.ai automations using triggers. 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 Zapier can be used.",{"id":2126,"title":48,"titles":2127,"content":2128,"level":15},"\u002Fguides\u002Fzapier-tables#getting-started",[2122],"To get started, you will need to have the following steps completed: Sign up to Zapier.Create a new Table by clicking \"Create\" and selecting \"Table\" - create this to meet your own requirements. To trigger your axiom.ai automations, you'll need the following: API key - The API key is found on the dashboard.Automation name - Get the name of the automation you wish to trigger.Endpoint - The current endpoint is https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger. You may require a Zapier subscription and an axiom.ai subscription to use some of the steps within this guide.",{"id":2130,"title":2131,"titles":2132,"content":2133,"level":15},"\u002Fguides\u002Fzapier-tables#working-with-zapier-tables-data-in-axiomai","Working with Zapier Tables data in axiom.ai",[2122],"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.",{"id":2135,"title":2136,"titles":2137,"content":2138,"level":61},"\u002Fguides\u002Fzapier-tables#create-a-new-record","Create a new record",[2122,2131],"To get started, create your automation as normal, once you are ready to send the data to your Zapier Table, continue this guide. 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: Create Zap - Create a new Zap by navigating to Zapier, and clicking \"Create\".Add trigger - Click \"Trigger\", then select \"Webhooks by Zapier\". See the section below for more information on configuring this trigger.Trigger webhook - In axiom.ai, add a Trigger webhook step to your automation. Input the URL from the \"your webhook URL\" section in Zapier. Learn more about configuring the \"Webhooks by Zapier\" trigger: Set the \"trigger event\" to \"catch raw webhook\", press continue.Save the URL in the \"your webhook URL\" section for later. 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: 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.Configure - Follow the instructions below to configure the \"Formatter by Zapier\" action. To configure the \"Formatter by Zapier\" step, follow the steps below: Action event - Set to \"text\".Transform - Set to \"split text\".Input - Click \"+\" and set to \"raw body\".Separator - Click into the field and set to \"single speech mark\".Segment index - Set to \"all (as separate fields)\".Continue - click continue.Test - Click \"test step\". 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.",{"id":2140,"title":2141,"titles":2142,"content":2143,"level":61},"\u002Fguides\u002Fzapier-tables#send-data-to-axiomai-automation","Send data to axiom.ai automation",[2122,2131],"To get started, create a new \"Zap\": Actions - Add a \"Zapier Tables\" action to your Zap.Configure - 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.Actions - Add an \"axiom.ai\" action using the search functionality.Configure - 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. Now, set up your axiom.ai automation: Create - Click \"+ New Automation\" to create a new automation.Receive data - Add a Receive data from another app step.Configure - Input test data into the \"Test data\" field, this will assist in the testing. 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\".",{"id":2145,"title":79,"titles":2146,"content":2147,"level":15},"\u002Fguides\u002Fzapier-tables#testing-your-workflow",[2122],"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. 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. Additionally, the resources below may be helpful in debugging your automation: How to debugCommon errorsHandling errors",{"id":2149,"title":84,"titles":2150,"content":2151,"level":15},"\u002Fguides\u002Fzapier-tables#wrapping-up",[2122],"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. Information accurate as of December 2024.",[2153,2831,3125,3437],{"id":2154,"title":2013,"body":2155,"date":2815,"description":2816,"extension":2817,"meta":2818,"navigation":2414,"order":2815,"path":2012,"seo":2828,"stem":2829,"__hash__":2830},"guides\u002Fguides\u002Fwebhooks.md",{"type":2156,"value":2157,"toc":2805},"minimark",[2158,2161,2171,2175,2178,2212,2215,2218,2221,2237,2241,2249,2265,2273,2276,2279,2293,2305,2688,2701,2705,2708,2711,2738,2741,2747,2750,2753,2756,2759,2779,2782,2795,2801],[2159,2160],"hr",{},[2162,2163,2164,2165,2170],"p",{},"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 ",[2166,2167,2169],"a",{"href":2168},".\u002F","guides"," for more specific guides.",[2172,2173,48],"h2",{"id":2174},"getting-started",[2162,2176,2177],{},"To get started with triggering a webhook using an automation, you will need the following from the axiom.ai Chrome extension:",[2179,2180,2181],"guide",{},[2182,2183,2184,2197,2203],"ul",{},[2185,2186,2187,2191,2192,2196],"li",{},[2188,2189,2190],"code",{},"API key",": The API key is found on the ",[2166,2193,2195],{"href":2194},"\u002Fdocs\u002Fdeveloper-hub\u002Fapi\u002Fkeys","dashboard",".",[2185,2198,2199,2202],{},[2188,2200,2201],{},"Automation name",": Get the name of the automation you wish to trigger.",[2185,2204,2205,2208,2209,2196],{},[2188,2206,2207],{},"Endpoint",": The current endpoint is ",[2188,2210,2211],{},"https:\u002F\u002Flar.axiom.ai\u002Fapi\u002Fv3\u002Ftrigger",[2162,2213,2214],{},"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.",[2172,2216,2022],{"id":2217},"triggering-a-webhook-from-an-axiomai-automation",[2162,2219,2220],{},"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:",[2179,2222,2223],{},[2224,2225,2226,2231],"ol",{},[2185,2227,2228,2230],{},[2188,2229,2207],{},": The endpoint that needs to be triggered by your automation.",[2185,2232,2233,2236],{},[2188,2234,2235],{},"Payload",": The payload format that is required.",[2238,2239,2027],"h3",{"id":2240},"low-code",[2162,2242,2243,2244,2248],{},"The ",[2166,2245,2247],{"href":2246},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Ftrigger-webhook","Trigger webhook"," step can be used in order to trigger a webhook from your automations. Follow the steps below to get started:",[2179,2250,2251],{},[2224,2252,2253,2259,2262],{},[2185,2254,2255,2256,2258],{},"Add a ",[2166,2257,2247],{"href":2246}," step.",[2185,2260,2261],{},"Enter the \"Endpoint\".",[2185,2263,2264],{},"Enter the \"Payload\".",[2162,2266,2267,2268,2272],{},"Remember, the \"Insert data\" option can be used to dynamically input data from your automation into your payload, see ",[2166,2269,2271],{"href":2270},"\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fpass","Passing data between steps"," for more information.",[2238,2274,2032],{"id":2275},"javascript",[2162,2277,2278],{},"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:",[2224,2280,2281,2284,2287,2290],{},[2185,2282,2283],{},"Allowing you to receive additional data, from a database, for example.",[2185,2285,2286],{},"Having more control over headers - for example, authorization headers.",[2185,2288,2289],{},"Being able to parse the response.",[2185,2291,2292],{},"Being able to use the response to automatically retry the call in the event of a rate limit being hit.",[2162,2294,2295,2296,2300,2301,2304],{},"To get started, add a ",[2166,2297,2299],{"href":2298},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fwrite-javascript","Write Javascript"," step to your automation and use the ",[2188,2302,2303],{},"fetch"," method. See the example below to get started.",[2306,2307,2311],"pre",{"className":2308,"code":2309,"language":2310,"meta":492,"style":492},"language-js shiki shiki-themes github-light-default github-dark-default","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","js",[2188,2312,2313,2336,2350,2362,2371,2403,2409,2416,2438,2446,2466,2478,2484,2492,2512,2523,2529,2552,2558,2564,2579,2596,2604,2610,2616,2637,2649,2661,2676,2682],{"__ignoreMap":492},[2314,2315,2317,2321,2325,2328,2332],"span",{"class":2316,"line":9},"line",[2314,2318,2320],{"class":2319},"sjeE4","const",[2314,2322,2324],{"class":2323},"sHrmB"," url",[2314,2326,2327],{"class":2319}," =",[2314,2329,2331],{"class":2330},"sSVrQ"," \"https:\u002F\u002Fexample.com\u002Fwebhook\"",[2314,2333,2335],{"class":2334},"s4rv2",";\n",[2314,2337,2338,2340,2343,2345,2348],{"class":2316,"line":15},[2314,2339,2320],{"class":2319},[2314,2341,2342],{"class":2323}," apiKey",[2314,2344,2327],{"class":2319},[2314,2346,2347],{"class":2330}," \"xxxxxxxxxx\"",[2314,2349,2335],{"class":2334},[2314,2351,2352,2354,2357,2359],{"class":2316,"line":61},[2314,2353,2320],{"class":2319},[2314,2355,2356],{"class":2323}," data",[2314,2358,2327],{"class":2319},[2314,2360,2361],{"class":2334}," {\n",[2314,2363,2365,2368],{"class":2316,"line":2364},4,[2314,2366,2367],{"class":2330},"    \"key\"",[2314,2369,2370],{"class":2334},": apiKey,\n",[2314,2372,2374,2377,2380,2383,2386,2389,2392,2395,2397,2400],{"class":2316,"line":2373},5,[2314,2375,2376],{"class":2330},"    \"data\"",[2314,2378,2379],{"class":2334},": [[",[2314,2381,2382],{"class":2323},"1",[2314,2384,2385],{"class":2334},", ",[2314,2387,2388],{"class":2323},"2",[2314,2390,2391],{"class":2334},"], [",[2314,2393,2394],{"class":2323},"3",[2314,2396,2385],{"class":2334},[2314,2398,2399],{"class":2323},"4",[2314,2401,2402],{"class":2334},"]]\n",[2314,2404,2406],{"class":2316,"line":2405},6,[2314,2407,2408],{"class":2334},"};\n",[2314,2410,2412],{"class":2316,"line":2411},7,[2314,2413,2415],{"emptyLinePlaceholder":2414},true,"\n",[2314,2417,2419,2421,2425,2427,2430,2433,2436],{"class":2316,"line":2418},8,[2314,2420,2320],{"class":2319},[2314,2422,2424],{"class":2423},"sbjLL"," sendData",[2314,2426,2327],{"class":2319},[2314,2428,2429],{"class":2319}," async",[2314,2431,2432],{"class":2334}," () ",[2314,2434,2435],{"class":2319},"=>",[2314,2437,2361],{"class":2334},[2314,2439,2441,2444],{"class":2316,"line":2440},9,[2314,2442,2443],{"class":2319},"    try",[2314,2445,2361],{"class":2334},[2314,2447,2449,2452,2455,2457,2460,2463],{"class":2316,"line":2448},10,[2314,2450,2451],{"class":2319},"        const",[2314,2453,2454],{"class":2323}," response",[2314,2456,2327],{"class":2319},[2314,2458,2459],{"class":2319}," await",[2314,2461,2462],{"class":2423}," fetch",[2314,2464,2465],{"class":2334},"(url, {\n",[2314,2467,2469,2472,2475],{"class":2316,"line":2468},11,[2314,2470,2471],{"class":2334},"            method: ",[2314,2473,2474],{"class":2330},"'POST'",[2314,2476,2477],{"class":2334},",\n",[2314,2479,2481],{"class":2316,"line":2480},12,[2314,2482,2483],{"class":2334},"            headers: {\n",[2314,2485,2487,2490],{"class":2316,"line":2486},13,[2314,2488,2489],{"class":2330},"                'apikey'",[2314,2491,2370],{"class":2334},[2314,2493,2495,2498,2501,2504,2507,2510],{"class":2316,"line":2494},14,[2314,2496,2497],{"class":2330},"                'Authorization'",[2314,2499,2500],{"class":2334},": ",[2314,2502,2503],{"class":2330},"`Bearer ${",[2314,2505,2506],{"class":2334},"apiKey",[2314,2508,2509],{"class":2330},"}`",[2314,2511,2477],{"class":2334},[2314,2513,2515,2518,2520],{"class":2316,"line":2514},15,[2314,2516,2517],{"class":2330},"                'Content-Type'",[2314,2519,2500],{"class":2334},[2314,2521,2522],{"class":2330},"'application\u002Fjson'\n",[2314,2524,2526],{"class":2316,"line":2525},16,[2314,2527,2528],{"class":2334},"            },\n",[2314,2530,2532,2535,2538,2540,2543,2546,2549],{"class":2316,"line":2531},17,[2314,2533,2534],{"class":2334},"            body: ",[2314,2536,2537],{"class":2323},"JSON",[2314,2539,2196],{"class":2334},[2314,2541,2542],{"class":2423},"stringify",[2314,2544,2545],{"class":2334},"(",[2314,2547,2548],{"class":2423},"format",[2314,2550,2551],{"class":2334},"(data))\n",[2314,2553,2555],{"class":2316,"line":2554},18,[2314,2556,2557],{"class":2334},"        });\n",[2314,2559,2561],{"class":2316,"line":2560},19,[2314,2562,2563],{"class":2334},"                               \n",[2314,2565,2567,2570,2573,2576],{"class":2316,"line":2566},20,[2314,2568,2569],{"class":2319},"        if",[2314,2571,2572],{"class":2334}," (",[2314,2574,2575],{"class":2319},"!",[2314,2577,2578],{"class":2334},"response.ok) {\n",[2314,2580,2582,2585,2588,2590,2593],{"class":2316,"line":2581},21,[2314,2583,2584],{"class":2334},"            console.",[2314,2586,2587],{"class":2423},"error",[2314,2589,2545],{"class":2334},[2314,2591,2592],{"class":2330},"\"Something went wrong with response\"",[2314,2594,2595],{"class":2334},", response); \n",[2314,2597,2599,2602],{"class":2316,"line":2598},22,[2314,2600,2601],{"class":2319},"            return",[2314,2603,2335],{"class":2334},[2314,2605,2607],{"class":2316,"line":2606},23,[2314,2608,2609],{"class":2334},"        }\n",[2314,2611,2613],{"class":2316,"line":2612},24,[2314,2614,2615],{"class":2334},"      \n",[2314,2617,2619,2621,2624,2626,2628,2631,2634],{"class":2316,"line":2618},25,[2314,2620,2451],{"class":2319},[2314,2622,2623],{"class":2323}," result",[2314,2625,2327],{"class":2319},[2314,2627,2459],{"class":2319},[2314,2629,2630],{"class":2334}," response.",[2314,2632,2633],{"class":2423},"json",[2314,2635,2636],{"class":2334},"();\n",[2314,2638,2640,2643,2646],{"class":2316,"line":2639},26,[2314,2641,2642],{"class":2334},"        console.",[2314,2644,2645],{"class":2423},"log",[2314,2647,2648],{"class":2334},"(result);\n",[2314,2650,2652,2655,2658],{"class":2316,"line":2651},27,[2314,2653,2654],{"class":2334},"    } ",[2314,2656,2657],{"class":2319},"catch",[2314,2659,2660],{"class":2334}," (error) {\n",[2314,2662,2664,2666,2668,2670,2673],{"class":2316,"line":2663},28,[2314,2665,2642],{"class":2334},[2314,2667,2587],{"class":2423},[2314,2669,2545],{"class":2334},[2314,2671,2672],{"class":2330},"\"Something went wrong\"",[2314,2674,2675],{"class":2334},", error);\n",[2314,2677,2679],{"class":2316,"line":2678},29,[2314,2680,2681],{"class":2334},"    }\n",[2314,2683,2685],{"class":2316,"line":2684},30,[2314,2686,2687],{"class":2334},"}\n",[2162,2689,2690,2691,2693,2694,2700],{},"Learn more about the ",[2188,2692,2303],{}," function in the Mozilla ",[2166,2695,2699],{"href":2696,"rel":2697},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FFetch_API\u002FUsing_Fetch",[2698],"nofollow","Using the Fetch API"," documentation.",[2162,2702,2267,2703,2272],{},[2166,2704,2271],{"href":2270},[2172,2706,2037],{"id":2707},"triggering-an-axiomai-automation-from-a-webhook",[2162,2709,2710],{},"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:",[2179,2712,2713],{},[2182,2714,2715,2729],{},[2185,2716,2717,2721,2722,2725,2726,2258],{},[2718,2719,2720],"strong",{},"1.0"," ",[2188,2723,2724],{},"Receive data from a webhook",": Add a ",[2166,2727,2724],{"href":2728},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Freceive-data-from-another-app",[2185,2730,2731,2721,2734,2737],{},[2718,2732,2733],{},"2.0",[2188,2735,2736],{},"Test data",": Configure the test data input with the expected payload from the third-party application.",[2162,2739,2740],{},"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.",[2162,2742,2743],{},[2744,2745,2746],"em",{},"Note, triggering automations from webhooks is only available in specific plans with the 'webhooks' feature.",[2172,2748,79],{"id":2749},"testing-your-workflow",[2162,2751,2752],{},"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.",[2162,2754,2755],{},"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.",[2162,2757,2758],{},"Additionally, the resources below may be helpful in debugging your automation:",[2182,2760,2761,2767,2773],{},[2185,2762,2763],{},[2166,2764,2766],{"href":2765},"\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Fhow-to-debug","How to debug",[2185,2768,2769],{},[2166,2770,2772],{"href":2771},"\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferrors","Common errors",[2185,2774,2775],{},[2166,2776,2778],{"href":2777},"\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Ferror-handling","Handling errors",[2172,2780,84],{"id":2781},"wrapping-up",[2162,2783,2784,2785,2789,2790,2196],{},"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 ",[2166,2786,2788],{"href":2787},".\u002Fsupabase","Supabase"," 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 ",[2166,2791,2794],{"href":2792,"rel":2793},"https:\u002F\u002Fwww.reddit.com\u002Fr\u002Faxiom_ai",[2698],"Reddit community",[2162,2796,2797,2798,2196],{},"Can't get an API call to work? Ask an expert in our ",[2166,2799,2794],{"href":2792,"rel":2800},[2698],[2802,2803,2804],"style",{},"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":492,"searchDepth":61,"depth":61,"links":2806},[2807,2808,2812,2813,2814],{"id":2174,"depth":15,"text":48},{"id":2217,"depth":15,"text":2022,"children":2809},[2810,2811],{"id":2240,"depth":61,"text":2027},{"id":2275,"depth":61,"text":2032},{"id":2707,"depth":15,"text":2037},{"id":2749,"depth":15,"text":79},{"id":2781,"depth":15,"text":84},null,"Learn how to use webhooks to send or receive data within your axiom.ai automations.","md",{"type":2819,"format":2820,"intent_type":2821,"intent":2822,"tags":2823,"platfrom":2826},"no-code","template","pattern","Move data between apps",[2824,2825],"api","trigger",[2827],"Any",{"title":2013,"description":2816},"guides\u002Fwebhooks","yUw3OkbuU80B2i3-FtNSJ5BOsb_O3TQKsAwcVGh_W6k",{"id":2832,"title":2055,"body":2833,"date":2815,"description":3114,"extension":2817,"meta":3115,"navigation":2414,"order":2815,"path":2054,"seo":3122,"stem":3123,"__hash__":3124},"guides\u002Fguides\u002Fzapier.md",{"type":2156,"value":2834,"toc":3104},[2835,2837,2840,2843,2845,2847,2850,2873,2876,2878,2881,2905,2908,2918,2921,2937,2940,2986,2991,2993,2995,2998,3006,3009,3011,3014,3016,3019,3050,3057,3060,3062,3069,3095,3098,3100,3102],[2159,2836],{},[2162,2838,2839],{},"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.",[2841,2842],"hero-media",{},[2172,2844,48],{"id":2174},[2159,2846],{},[2162,2848,2849],{},"To get started, you will need the following from the axiom.ai Chrome extension:",[2179,2851,2852],{},[2224,2853,2854,2861,2866],{},[2185,2855,2856,2858,2859,2196],{},[2718,2857,2190],{}," - The API key is found on the ",[2166,2860,2195],{"href":2194},[2185,2862,2863,2865],{},[2718,2864,2201],{}," - Get the name of the automation you wish to trigger.",[2185,2867,2868,2870,2871,2196],{},[2718,2869,2207],{}," - The current endpoint is ",[2188,2872,2211],{},[2172,2874,2063],{"id":2875},"triggering-a-zap-using-an-axiomai-automation",[2159,2877],{},[2162,2879,2880],{},"To get started, we are going to assume that you have an automation created.",[2179,2882,2883],{},[2224,2884,2885,2891,2897],{},[2185,2886,2887,2890],{},[2718,2888,2889],{},"Create Zap"," - Create a new Zap by navigating to Zapier, and clicking \"+ Create\".",[2185,2892,2893,2896],{},[2718,2894,2895],{},"Add trigger"," - Click \"Trigger\", then select \"Webhooks by Zapier\". See the section below for more information on configuring this trigger.",[2185,2898,2899,2901,2902,2904],{},[2718,2900,2247],{}," - In axiom.ai, add a ",[2166,2903,2247],{"href":2246}," step to your automation. Input the URL from the \"your webhook URL\" section in Zapier.",[2162,2906,2907],{},"Learn more about configuring the \"Webhooks by Zapier\" trigger:",[2179,2909,2910],{},[2182,2911,2912,2915],{},[2185,2913,2914],{},"Set the \"trigger event\" to \"catch raw webhook\", press continue.",[2185,2916,2917],{},"Save the URL in the \"your webhook URL\" section for later.",[2162,2919,2920],{},"To use data within your Zap, you'll need to first process the data:",[2179,2922,2923],{},[2224,2924,2925,2931],{},[2185,2926,2927,2930],{},[2718,2928,2929],{},"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.",[2185,2932,2933,2936],{},[2718,2934,2935],{},"Configure"," - Follow the instructions below to configure the \"Formatter by Zapier\" action.",[2162,2938,2939],{},"To configure the \"Formatter by Zapier\" step, follow the steps below:",[2179,2941,2942],{},[2224,2943,2944,2950,2956,2962,2968,2974,2980],{},[2185,2945,2946,2949],{},[2718,2947,2948],{},"Action event"," - Set to \"text\".",[2185,2951,2952,2955],{},[2718,2953,2954],{},"Transform"," - Set to \"split text\".",[2185,2957,2958,2961],{},[2718,2959,2960],{},"Input"," - Click \"+\" and set to \"raw body\".",[2185,2963,2964,2967],{},[2718,2965,2966],{},"Separator"," - Click into the field and set to \"single speech mark\".",[2185,2969,2970,2973],{},[2718,2971,2972],{},"Segment index"," - Set to \"all (as separate fields)\".",[2185,2975,2976,2979],{},[2718,2977,2978],{},"Continue"," - click continue.",[2185,2981,2982,2985],{},[2718,2983,2984],{},"Test"," - Click \"test step\".",[2987,2988],"img",{"src":2989,"alt":2990},"\u002Fdocs\u002Fguides\u002Fzapier-formatter-step.jpg","Configure the formatter by Zapier step",[2172,2992,79],{"id":2749},[2159,2994],{},[2162,2996,2997],{},"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.",[2162,2999,3000,3001,3005],{},"If the desired results have not been achieved, review the ",[2166,3002,3004],{"href":3003},"\u002Fdocs\u002Fno-code-tool\u002Ftroubleshooting\u002Fhow-to-debug#run-reports","Run Reports"," within axiom.ai, or the Zap runs section within Zapier.",[2172,3007,490],{"id":3008},"examples",[2159,3010],{},[2238,3012,2075],{"id":3013},"sending-scraper-data-from-an-axiomai-automation-to-zapier-for-processing",[2159,3015],{},[2162,3017,3018],{},"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.",[2179,3020,3021],{},[2224,3022,3023,3038],{},[2185,3024,3025,3028,3029,3033,3034,2258],{},[2718,3026,3027],{},"Scrape"," - Create a new axiom.ai automation, add a ",[2166,3030,3032],{"href":3031},"\u002Fdocs\u002Fno-code-tool\u002Fhow-it-works\u002Fget-data","scraping step",". In this example, we will be using the ",[2166,3035,3037],{"href":3036},"\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fget-data-from-url","Get data from a URL",[2185,3039,3040,3042,3043,3045,3046,3049],{},[2718,3041,2247],{}," - Following the instructions above, configure your Zap to be triggered by incoming webhooks. Add a ",[2166,3044,2247],{"href":2246}," step and use the \"Insert data\" option to insert the ",[2188,3047,3048],{},"[scrape-data]"," token.",[2162,3051,3052,3053,3056],{},"Follow the steps from the ",[2166,3054,2063],{"href":3055},"#triggering-a-zap-using-an-axiomai-automation"," to learn how to process the data that you send to your Zap.",[2238,3058,2080],{"id":3059},"write-data-to-excel",[2159,3061],{},[2162,3063,3064,3065,3068],{},"To write data to Excel, follow the steps in ",[2166,3066,2063],{"href":3067},"\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:",[2179,3070,3071],{},[2224,3072,3073,3079,3084,3090],{},[2185,3074,3075,3078],{},[2718,3076,3077],{},"Excel"," - Search for \"Microsoft Excel\" and add a new step to your Zap.",[2185,3080,3081,3083],{},[2718,3082,2948],{}," - Set this to \"Add Row\".",[2185,3085,3086,3089],{},[2718,3087,3088],{},"Set up"," - Follow the instructions in the Zap to connect your account and configure your step.",[2185,3091,3092,3094],{},[2718,3093,2935],{}," - To configure your data, head into the \"Configure\" tab. Click the \"+\" button beside the \"Column\" inputs to select your variables.",[2162,3096,3097],{},"To test, trigger your automation within axiom.ai",[2172,3099,84],{"id":2781},[2159,3101],{},[2162,3103,2086],{},{"title":492,"searchDepth":61,"depth":61,"links":3105},[3106,3107,3108,3109,3113],{"id":2174,"depth":15,"text":48},{"id":2875,"depth":15,"text":2063},{"id":2749,"depth":15,"text":79},{"id":3008,"depth":15,"text":490,"children":3110},[3111,3112],{"id":3013,"depth":61,"text":2075},{"id":3059,"depth":61,"text":2080},{"id":2781,"depth":15,"text":84},"How to build an automation that scrapes data from a webpage and connects to Zapier via a webhook.",{"video":3116,"type":2819,"format":2179,"intent_type":2821,"intent":2822,"tags":3117,"platfrom":3120},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FV3I7w8fnO88?rel=0&amp;",[2824,2825,3118,3119],"data entry","integration",[3121],"Zapier",{"title":2055,"description":3114},"guides\u002Fzapier","mvO_R6ltR7wBcrltiSx-f3NdEw7mmmsEToYoJLF1ht8",{"id":3126,"title":997,"body":3127,"date":2815,"description":3133,"extension":2817,"meta":3429,"navigation":2414,"order":2815,"path":996,"seo":3434,"stem":3435,"__hash__":3436},"guides\u002Fguides\u002Fhow-to-loop-through-data-in-cells.md",{"type":2156,"value":3128,"toc":3422},[3129,3131,3134,3137,3140,3143,3146,3149,3153,3156,3159,3170,3173,3180,3189,3198,3207,3215,3219,3222,3225,3385,3388,3390,3393,3396,3416,3419],[2159,3130],{},[2162,3132,3133],{},"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.",[2162,3135,3136],{},"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.",[2162,3138,3139],{},"Let’s dive in.",[2172,3141,1002],{"id":3142},"how-to-set-up-your-data",[2162,3144,3145],{},"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.",[2162,3147,3148],{},"For example, in column C you might store sizes like this:",[2987,3150],{"src":3151,"alt":3152},"\u002Fguides\u002Fgoogle-cell-data.webp","How to set up you data separated by a delimiter.",[2172,3154,1007],{"id":3155},"when-to-use-this-method",[2162,3157,3158],{},"Use this approach when:",[2182,3160,3161,3164,3167],{},[2185,3162,3163],{},"You need to tick multiple checkboxes.",[2185,3165,3166],{},"You need to select multiple dropdown options.",[2185,3168,3169],{},"You are automating product variants, tags, permissions, or categories.",[2172,3171,1012],{"id":3172},"what-steps-we-will-use",[2162,3174,3175,3176,3179],{},"First, we import the source data using the ",[2166,3177,3178],{"href":492},"Read data from Google Sheet"," step. This gives us access to all product values stored in the sheet.",[2162,3181,3182,3183,3188],{},"Next, we use the ",[2166,3184,3187],{"href":3185,"rel":3186},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Floop",[2698],"Loop through data step"," to process each row individually.",[2162,3190,3191,3192,3197],{},"Within that loop, we add a ",[2166,3193,3196],{"href":3194,"rel":3195},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fsplit-by-character",[2698],"Split by character step",". This takes a single cell containing multiple values and splits it using a delimiter, turning the values into an array.",[2162,3199,3200,3201,3206],{},"Because the split data is returned horizontally, we then use the ",[2166,3202,3205],{"href":3203,"rel":3204},"https:\u002F\u002Faxiom.ai\u002Fdocs\u002Fno-code-tool\u002Freference\u002Fsteps\u002Fswap-rows-and-columns",[2698],"Swap rows and columns step"," to convert it into a vertical list.",[2162,3208,3209,3210,3214],{},"Finally, we use another ",[2166,3211,3213],{"href":3185,"rel":3212},[2698],"Loop step"," to iterate through the transposed values one by one. This allows each option to be selected individually in the target dropdown or checkbox group.",[2987,3216],{"src":3217,"alt":3218},"\u002Fguides\u002Fnested-cell-loop.webp","steps for nested loop through cell data",[2172,3220,1017],{"id":3221},"how-to-structure-the-steps",[2162,3223,3224],{},"Below is a simplified outline of the structure:",[2179,3226,3227],{},[2182,3228,3229,3266],{},[2185,3230,3231,2721,3234,3237],{},[2718,3232,3233],{},"Step 1.0",[2188,3235,3236],{},"Read data from a Google Sheet",[2182,3238,3239,3245,3251,3260],{},[2185,3240,3241,3244],{},[2188,3242,3243],{},"Spreadsheet",": Search for the Google Sheet you created. Once found, click to select.",[2185,3246,3247,3250],{},[2188,3248,3249],{},"Sheet name",": Choose a sheet tab or leave blank to use the first tab.",[2185,3252,3253,3256,3257,2196],{},[2188,3254,3255],{},"First cell",": Start from a specified column and row, e.g., ",[2188,3258,3259],{},"\"A1\"",[2185,3261,3262,3265],{},[2188,3263,3264],{},"Last cell",": End at a specified column and row, depending on how many rows you want to process.",[2185,3267,3268,2721,3271,3274,3288],{},[2718,3269,3270],{},"Step 2.0",[2188,3272,3273],{},"Loop through data",[2182,3275,3276],{},[2185,3277,3278,3280,3281,3284,3285,2196],{},[2188,3279,3273],{},": Click ",[2188,3282,3283],{},"Insert data",", select ",[2188,3286,3287],{},"google-sheet-data",[2182,3289,3290,3317,3336],{},[2185,3291,3292,2721,3295,3298],{},[2718,3293,3294],{},"Step 2.1",[2188,3296,3297],{},"Split by character",[2182,3299,3300,3309],{},[2185,3301,3302,3305,3306,2196],{},[2188,3303,3304],{},"Character",": Enter your chosen delimiter, for example ",[2188,3307,3308],{},",",[2185,3310,3311,3280,3314,3316],{},[2188,3312,3313],{},"Data",[2188,3315,3283],{},", select the column that contains your delimited cell values (e.g., sizes column).",[2185,3318,3319,2721,3322,3325],{},[2718,3320,3321],{},"Step 2.2",[2188,3323,3324],{},"Swap rows and columns",[2182,3326,3327],{},[2185,3328,3329,3280,3331,3333,3334,2258],{},[2188,3330,3313],{},[2188,3332,3283],{},", select the output from the ",[2188,3335,3297],{},[2185,3337,3338,2721,3341,3344,3354],{},[2718,3339,3340],{},"Step 2.3",[2188,3342,3343],{},"Loop through data (nested loop)",[2182,3345,3346],{},[2185,3347,3348,3280,3350,3333,3352,2258],{},[2188,3349,3273],{},[2188,3351,3283],{},[2188,3353,3324],{},[2182,3355,3356],{},[2185,3357,3358,2721,3361,3364],{},[2718,3359,3360],{},"Step 2.3.1",[2188,3362,3363],{},"Click element",[2182,3365,3366,3372],{},[2185,3367,3368,3371],{},[2188,3369,3370],{},"Select",": Highlight the size dropdown.",[2185,3373,3374,3377,3378,3381,3382,3384],{},[2188,3375,3376],{},"Click",": Set to ",[2188,3379,3380],{},"Custom",", enable \"Use element text instead of HTML\", click \"insert data\" and select the output from the ",[2188,3383,3324],{}," step. Finally click \"Complete\".",[2162,3386,3387],{},"This allows each value in the cell (for example, each size) to be selected individually.",[2172,3389,84],{"id":2781},[2162,3391,3392],{},"Looping through data inside loops can feel complex at first. The key is setting up your data correctly using a delimiter.",[2162,3394,3395],{},"Once your data is structured properly, you only need a few steps:",[2182,3397,3398,3404,3410],{},[2185,3399,3400],{},[2166,3401,3403],{"href":3194,"rel":3402},[2698],"Split",[2185,3405,3406],{},[2166,3407,3409],{"href":3203,"rel":3408},[2698],"Transpose",[2185,3411,3412],{},[2166,3413,3415],{"href":3185,"rel":3414},[2698],"loop",[2162,3417,3418],{},"From there, you can automate selecting multiple dropdown items, ticking multiple checkboxes, or interacting with repeated UI elements.",[2162,3420,3421],{},"Master nested loops, and you unlock the ability to automate highly dynamic interfaces.",{"title":492,"searchDepth":61,"depth":61,"links":3423},[3424,3425,3426,3427,3428],{"id":3142,"depth":15,"text":1002},{"id":3155,"depth":15,"text":1007},{"id":3172,"depth":15,"text":1012},{"id":3221,"depth":15,"text":1017},{"id":2781,"depth":15,"text":84},{"pinned":2414,"metaTitle":3430,"type":2819,"format":2179,"intent_type":3431,"intent":2822,"tags":3432,"platfrom":3433},"How to loop through data in cells using nested loops and a data source like Google Sheets","workflow",[3118],[2827],{"title":997,"description":3133},"guides\u002Fhow-to-loop-through-data-in-cells","phx8XCoib2bbjF7pVdlaqhsm61REmcK3HabzAgfUBaU",{"id":3438,"title":1727,"body":3439,"date":3683,"description":3684,"extension":2817,"meta":3685,"navigation":2414,"order":2815,"path":1726,"seo":3696,"stem":3697,"__hash__":3698},"guides\u002Fguides\u002Fscrape-links-from-a-website.md",{"type":2156,"value":3440,"toc":3675},[3441,3443,3446,3448,3454,3457,3467,3470,3481,3487,3490,3493,3568,3571,3573,3576,3583,3586,3589,3668],[2159,3442],{},[2162,3444,3445],{},"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.",[2841,3447],{},[2162,3449,3450,3451],{},"We recommend scraping links with one Axiom then scraping the pages with another ",[2166,3452,3453],{"href":1981},"see this template.",[2172,3455,12],{"id":3456},"get-started-create-your-google-sheet",[2162,3458,3459,3460,3463,3464,2196],{},"Create a new Google Sheet. You can do this in your Chrome browser by entering the shortcut ",[2718,3461,3462],{},"\"sheet.new\"",", presuming you already have an account. Name your sheet something like 'Link Scraper’ and set up a tab called ",[2718,3465,3466],{},"\"Links\"",[2172,3468,1736],{"id":3469},"install-the-link-scraper",[2162,3471,3472,3473,3476,3477,3480],{},"To install this Web scraper template click  ",[2718,3474,3475],{},"\"Install template\"",".  If you’re a new user, you’ll have to click  ",[2718,3478,3479],{},"\"Install Chrome extension\""," and create a free axiom.ai account before you can edit the template.",[2162,3482,3483,3484,2196],{},"Once installed, click  ",[2718,3485,3486],{},"\"Start\"",[2162,3488,3489],{},"axiom.ai will guide you through the steps you need to configure in the app.",[2172,3491,1741],{"id":3492},"configure-your-link-scraper-in-a-minute",[2179,3494,3495],{},[2182,3496,3497,3533],{},[2185,3498,3499,2721,3501,3504],{},[2718,3500,3233],{},[2188,3502,3503],{},"Get a list of links to pages from a URL",[2182,3505,3506,3512,3521,3527],{},[2185,3507,3508,3511],{},[2188,3509,3510],{},"URL",": Enter the URL of the page you want to scrape.",[2185,3513,3514,2500,3516,3520],{},[2188,3515,3370],{},[2166,3517,3519],{"href":3518},"\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fmulti","Point and click"," to select the links you wish to scrape.",[2185,3522,3523,3526],{},[2188,3524,3525],{},"Find pager"," (if any): Select the \"Next\" button if the page is paginated.",[2185,3528,3529,3532],{},[2188,3530,3531],{},"Max Results",": Set the number of links you wish to scrape.",[2185,3534,3535,2721,3537,3540],{},[2718,3536,3270],{},[2188,3538,3539],{},"Write data to a Google Sheet",[2182,3541,3542,3546,3551,3560],{},[2185,3543,3544,3244],{},[2188,3545,3243],{},[2185,3547,3548,3550],{},[2188,3549,3249],{},": Choose the tab you created.",[2185,3552,3553,3556,3557,2196],{},[2188,3554,3555],{},"DATA",": Select ",[2188,3558,3559],{},"[scraped-link-data]",[2185,3561,3562,3377,3565,2196],{},[2188,3563,3564],{},"Write options",[2188,3566,3567],{},"\"Add to existing data\"",[2172,3569,1746],{"id":3570},"run-your-link-scraper",[2162,3572,1748],{},[2172,3574,33],{"id":3575},"customize-your-template",[2162,3577,3578,3579,3582],{},"Like all Axiom ",[2166,3580,3581],{"href":1084},"templates",", you can use our no-code bot builder to customize any bot according to your requirements.",[2172,3584,38],{"id":3585},"troubleshooting",[2162,3587,3588],{},"We recommend you watch the video to troubleshoot.",[2179,3590,3591],{},[2182,3592,3593,3610,3629,3640,3656],{},[2185,3594,3595,3598,3601,3602,3605,3606,2196],{},[2718,3596,3597],{},"Selectors fail to find content?",[3599,3600],"br",{},"\nIn ",[2188,3603,3604],{},"Step 1.0 – Get data from bot's current page",", try re-selecting or use ",[2166,3607,3609],{"href":3608},"\u002Fdocs\u002Fno-code-tool\u002Fthe-builder\u002Fselector-tool\u002Fcustom-css-selectors","custom selectors",[2185,3611,3612,3615,3617,3618,3621,3622,3625,3626,2196],{},[2718,3613,3614],{},"Slow running scraper?",[3599,3616],{},"\nIn the same step, toggle ",[2188,3619,3620],{},"Configure scraper",", then set ",[2188,3623,3624],{},"No. of retry..."," to ",[2188,3627,3628],{},"0",[2185,3630,3631,3634,3636,3637,3639],{},[2718,3632,3633],{},"Want to speed the scraper up?",[3599,3635],{},"\nSet ",[2188,3638,3531],{}," to match the number of columns you selected to scrape.",[2185,3641,3642,3645,3601,3647,3650,3651,3653,3654,2196],{},[2718,3643,3644],{},"No data written?",[3599,3646],{},[2188,3648,3649],{},"Step 2.0 – Write Data to a Google Sheet",", check that ",[2188,3652,3313],{}," is set to ",[2188,3655,3559],{},[2185,3657,3658,3661,3663,3664,3667],{},[2718,3659,3660],{},"Keeps overwriting data?",[3599,3662],{},"\nMake sure ",[2188,3665,3666],{},"Add to existing"," is selected in the same step.",[2162,3669,3670,3671],{},"We offer excellent customer support. If you need help, ",[2166,3672,3674],{"href":3673},"\u002Fcustomer-support","get in touch.",{"title":492,"searchDepth":61,"depth":61,"links":3676},[3677,3678,3679,3680,3681,3682],{"id":3456,"depth":15,"text":12},{"id":3469,"depth":15,"text":1736},{"id":3492,"depth":15,"text":1741},{"id":3570,"depth":15,"text":1746},{"id":3575,"depth":15,"text":33},{"id":3585,"depth":15,"text":38},"2022-04-07","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":3686,"level":3687,"video":3688,"templateId":3689,"type":2819,"format":2820,"intent_type":3431,"intent":3690,"tags":3691,"platfrom":3695},"2 minutes","Easy","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FzUHHWz6Ycgk",31,"Extract data from websites",[3692,3693,3694],"scraping","links","google sheet",[2827],{"title":1727,"description":3684},"guides\u002Fscrape-links-from-a-website","8HHW7YgcBmNnyHuxefIHcgELrxoYKr5LKyQLWNrVV8U",[],{"id":3701,"title":3702,"body":3703,"date":2815,"description":3756,"extension":2817,"meta":3757,"navigation":2414,"order":2815,"path":3758,"seo":3759,"stem":3760,"__hash__":3761},"content\u002Fpricing.md","Pricing",{"type":2156,"value":3704,"toc":3754},[3705,3710,3713,3716,3730,3738,3745],[3706,3707],"page-header-centered-text",{"description":3708,"headline":3709},"Try before you subscribe — all new accounts get 2 free hours of runtime. No credit card required.","Browser automation plans.",[3711,3712],"pricing-section",{},[3714,3715],"feature-table",{},[3717,3718,3721],"grid-fade-wrap",{"bg":3719,"color":3720},"gray-to-white","default",[3722,3723],"faq-list",{":faqs":3724,"description":3725,"eyebrow":3726,"link":3727,"linkText":3728,"title":3729},"[{\"question\":\"What is the Runtime?\",\"answer\":\"Runtime is the total amount of time that your bots can run per month. The available runtime varies from tier to tier. Unused runtime does not carry over to the next month. Note: free trial runtime does not renew. Check your runtime usage in the dashboard.\"},{\"question\":\"Do you offer custom plans?\",\"answer\":\"We offer custom plans in instances where the Ultimate tier is not sufficient. We are not able to offer custom plans for lower tiers. \u003Ca href='\u002Fcustomer-support'>Contact us\u003C\u002Fa> for more details.\"},{\"question\":\"Is my data private?\",\"answer\":\"Yes! When running your automation in the cloud, any processed data is not stored. When running your automation on your local PC, this data never leaves your PC. At no point do we store run data or share it with others. We store your account details, settings and automation configuration, and run reports. Learn more about our \u003Ca href='\u002Fprivacy-policy'>privacy policy\u003C\u002Fa>.\"},{\"question\":\"Does axiom.ai have an API or integrations?\",\"answer\":\"Yes! Pro and higher tiers can make use of our \u003Ca href='\u002Fdocs\u002Fdeveloper-hub\u002Fapi'>API\u003C\u002Fa>, \u003Ca href='\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fzapier'>Zapier\u003C\u002Fa>, and \u003Ca href='\u002Fdocs\u002Fno-code-tool\u002Fintegrations\u002Fmake'>Make\u003C\u002Fa> integrations to manage and send data to and from their automations.\"},{\"question\":\"Do I need to know how to code?\",\"answer\":\"axiom.ai is designed to be used as a no-code automation solution. Functionality can be extended with code, however, this is optional and all features are available without needing code.\"},{\"question\":\"Does axiom.ai have an API or integrations?\",\"answer\":\"Click the Support in the top menu to navigate to our Customer Support page for more details on support available.\"},{\"question\":\"How can I check my Runtime?\",\"answer\":\"Your Runtime usage is available within the extension, hover over the percentage ring for a more detailed view within the dashboard.\"},{\"question\":\"Do failed runs count against my Runtime?\",\"answer\":\"No, only successful runs count. That means you can test a bot as much as you want until it works.\"},{\"question\":\"Can I run my automations in the cloud?\",\"answer\":\"Yes, automations can be run in the cloud, or locally using the desktop application. Automations triggered by the API or an integration will run in the cloud by default.\"},{\"question\":\"Do you offer team accounts?\",\"answer\":\"Yes, automations can be run in the cloud, or locally using the desktop application. Automations triggered by the API or an integration will run in the cloud by default.\"}]","Common things people ask about no-code, code, AI, and running automations on our infrastructure.","FAQ","\u002Fdocs\u002Ffaq","See FAQ","Have a question?",[3731,3732],"customer-quote",{"author":3733,"className":3734,"quote":3737},"Shaun McArthur",[3735,3736],"gray","iso-grid-gray-100","Straightforward and easy to setup & test. Great pricing, too.",[3739,3740,3742],"background-wrapper",{"className":3741},[3735,3736],[3743,3744],"chrome-reviews",{},[3746,3747],"call-to-action",{":shapes":3748,"className":3749,"headline":3750,"linkText":3751,"linkTo":3752,"text":3753},"[\"starter\",\"pro\",\"pro-max\",\"ultimate\"]",[3735,3736],"Pick your plan.","Get started","https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Faxiom-browser-automation\u002Fcpgamigjcbffkaiciiepndmonbfdimbb?hl=en-GB","Start free, upgrade as you grow.",{"title":492,"searchDepth":61,"depth":61,"links":3755},[],"Browser automation plans starting free with 2 hours of runtime, no card required. Pro adds scheduling; Pro Max adds parallel runs; Ultimate unlocks everything.",{},"\u002Fpricing",{"title":3702,"description":3756},"pricing","e4svVhk1seLclsjOT0NBaygaoKpNjsg1MTnJqDUvqwM",{"id":3701,"title":3702,"body":3763,"date":2815,"description":3756,"extension":2817,"meta":3788,"navigation":2414,"order":2815,"path":3758,"seo":3789,"stem":3760,"__hash__":3761},{"type":2156,"value":3764,"toc":3786},[3765,3767,3769,3771,3775,3778,3783],[3706,3766],{"description":3708,"headline":3709},[3711,3768],{},[3714,3770],{},[3717,3772,3773],{"bg":3719,"color":3720},[3722,3774],{":faqs":3724,"description":3725,"eyebrow":3726,"link":3727,"linkText":3728,"title":3729},[3731,3776],{"author":3733,"className":3777,"quote":3737},[3735,3736],[3739,3779,3781],{"className":3780},[3735,3736],[3743,3782],{},[3746,3784],{":shapes":3748,"className":3785,"headline":3750,"linkText":3751,"linkTo":3752,"text":3753},[3735,3736],{"title":492,"searchDepth":61,"depth":61,"links":3787},[],{},{"title":3702,"description":3756},1781614739001]