ScreenshotNeo

BlogHow-to

How to Automate Webpage Screenshots from a Google Sheet with Zoho Flow in India

Build a Google Sheets to Zoho Flow screenshot workflow with Catalyst SmartBrowz, and learn which image-storage steps need account-level validation.

By the ScreenshotNeo team4 October 202610 min read

To automate screenshots from a Google Sheet with Zoho Flow, use a Row added trigger, pass the row’s URL to Zoho Catalyst SmartBrowz’s project-specific screenshot API, store the returned image, then update the sheet with its link and a status. The Sheets trigger and screenshot API are documented. Whether your Flow account can make the authenticated request and persist its binary response requires verification in that account; do not assume this is a complete no-code flow.

This guide is for pages you are permitted to capture. Zoho cautions that browser automation and scraping are at the user’s risk; use domains you own or have approval to access.

1. Choose the row event that matches your workflow

Event How to configure it Best for
A row is appended Use the Google Sheets Row added trigger in Zoho Flow. New screenshot requests submitted by adding rows at the bottom of a worksheet.
An existing row changes Use Zoho’s documented Google Apps Script on-edit pattern to send changed-row data to a Flow webhook. Re-capturing when someone edits a URL or another relevant field.

The standard Row added trigger is documented to fire when a new row is added at the bottom of the selected worksheet. It should not be treated as an edit trigger. For edits, Zoho’s tutorial uses an Apps Script edit trigger and a Flow webhook. See the Google Sheets integration for Zoho Flow and Zoho’s Google Sheets edit-trigger tutorial.

2. Prepare the Google Sheet

Create a worksheet with a header row and a URL column. A practical layout is:

url status screenshot_url error
https://example.com pending
  • Put all field names in row one, contiguously, with no blank columns between them.
  • Do not merge cells. Zoho’s integration guidance says merged cells are unsupported, and gaps in the header row can prevent later column names from being fetched.
  • Use a dedicated request worksheet if users might otherwise add incomplete rows.
  • For the current Google Sheets connection in Flow, configure the spreadsheet ID. If you used an older connection, reconnect or configure the app as directed by Zoho; legacy “Row added (Old version)” and related actions are no longer supported in the guide.

The sheet actions listed for the India-facing integration include creating a spreadsheet, creating a row, updating a row, and fetching a row. These cover sheet-side operations; they do not establish that Flow can call the screenshot API or store its binary response.

3. Configure the documented Row added trigger

  1. In Zoho Flow, create a flow and choose Google Sheets as the trigger app.
  2. Select Row added, authorize the Google account, and choose the spreadsheet and worksheet.
  3. Refresh or load the available fields after selecting the current spreadsheet configuration. Confirm that the URL and status columns appear as trigger data.
  4. Use a sample appended row to inspect the values exposed to later flow steps.

If you need to process pre-existing rows, the append trigger does not backfill them. Use a separate one-time process or add new request rows. If your workflow depends on edits, configure the Apps Script-to-webhook pattern instead of expecting this trigger to run.

4. Send the URL to Catalyst SmartBrowz

Zoho Catalyst SmartBrowz documents a project-specific request of this form:

POST {api-domain}/browser360/v1/project/{project_id}/convert

The request uses OAuth authorization with the ZohoCatalyst.pdfshot.EXECUTE scope. Zoho’s example includes an Authorization: Zoho-oauthtoken … header and Content-Type: application/json. Its JSON body supplies a URL and screenshot options; the API response contains the generated screenshot. Consult the Catalyst SmartBrowz documentation and Zoho Catalyst OAuth documentation for the current API domain, project setup, token process, and request schema.

The following illustrates the documented request structure. Replace placeholders with the API domain, project ID, OAuth token and request options from your Catalyst project. The exact option names and accepted values should be taken from the current SmartBrowz documentation for your account.

POST https://{api-domain}/browser360/v1/project/{project_id}/convert
Authorization: Zoho-oauthtoken {ACCESS_TOKEN}
Content-Type: application/json

{
  "url": "https://example.com",
  "output": "screenshot",
  "screenshot": {
    "type": "png",
    "quality": 90,
    "fullPage": true,
    "clip": null,
    "viewport": {
      "width": 1440,
      "height": 900
    }
  },
  "javascript": true,
  "navigation": {
    "timeout": 30000,
    "waitUntil": "networkidle"
  }
}

This is a configuration-shaped example, not a guarantee that every shown property name or value is accepted unchanged by every Catalyst account or API version. Validate the request against the current official schema before deploying it. The documented examples cover URL input, screenshot output and options such as screenshot type/quality, full-page and clipping behavior, viewport, JavaScript, navigation timeout and wait behavior.

5. Verify the response-to-storage path before calling it complete

A screenshot response is not automatically a Drive file or a link in the sheet. A complete workflow needs an implementation that can receive the authenticated POST response, handle its image bytes or returned representation, store the image somewhere, and return a durable or accessible link. Then it needs to update the originating row.

  1. In your Zoho account, verify that a Flow connector, custom function, or intermediary can make the required authenticated POST with the project-specific URL and OAuth scope.
  2. Inspect the real response: determine whether it contains binary image data or another representation, and what status and content type indicate success.
  3. Verify that your chosen storage destination accepts that response. Establish whether it needs raw bytes, base64 decoding, or another conversion.
  4. Capture the stored object’s URL or identifier, then map it to the correct originating sheet row.
  5. Write complete and the stored link on success. On failure, write an error status and a concise error detail without overwriting the original URL.
  6. Run a test with a permitted page, then verify the image opens from the stored link and the update affected the intended row.

The reviewed Zoho sources establish the trigger, screenshot request and sheet update actions, but they do not establish a turnkey Flow action for this authenticated POST and binary-image persistence. Confirm these account-level pieces before promising a no-code recipe. Catalyst pricing, limits and availability details for this workflow in India also need to be checked with Zoho.

6. Build an edit-trigger flow when URLs change

For an existing-row edit, follow Zoho’s Apps Script pattern: create an on-edit script that sends the changed row’s data to the Flow webhook URL. In Flow, map the webhook payload into the same screenshot, storage and sheet-update stages. The tutorial describes the generated webhook URL as the destination and the changed row values as data available to subsequent Flow actions.

Decide which edits should request a new capture. For example, trigger only when the URL changes or when a dedicated recapture field is set; otherwise, edits to status or screenshot link can cause unnecessary repeated work. Validate the script’s trigger permissions and webhook payload with your own sheet before enabling it for a live worksheet.

7. Plan status handling, retries and duplicate protection

  • Statuses: use a small state set such as pending, processing, complete and error. Set processing before the API call if the flow can update the row safely.
  • Duplicates: a repeated trigger or manual retry can produce more than one capture. Keep a request ID or use the row identifier plus a capture version to detect repeats.
  • Row matching: retain a stable row key or trigger row identifier through the flow. Avoid searching only by URL, since the same URL may appear in multiple rows.
  • Retries: retry transient network or service errors with a limit and delay. Do not retry invalid URLs, authorization failures or unsupported options until corrected.
  • Partial failures: if capture succeeds but storage or row update fails, record enough information to resume without blindly capturing again.
  • Concurrency: if several rows arrive close together, confirm Flow and the intermediary’s execution and rate limits. Avoid assuming ordered completion.

8. Options to decide for each capture

Choice Use it when Trade-off to check
Full page or viewport Full page for a whole document; viewport for the initial visible area. Full-page captures can take longer and create larger files.
Viewport dimensions You need a consistent desktop or mobile layout. Responsive layouts may differ at each size; specify dimensions deliberately.
Image type and quality Choose the supported output that suits downstream use. Lossless formats may be larger; lossy quality settings affect visual detail. Confirm supported values in the API schema.
Clipping You need a defined portion of the page. Validate coordinates and dimensions against the selected viewport and page.
JavaScript and wait behavior The page renders content dynamically. Waiting for network idle can take longer or never occur on pages with ongoing requests; use the documented timeout and wait options appropriately.
Navigation timeout Pages vary in response time. A longer limit consumes more time per request; too short a limit can fail slow pages.

Option names above describe the documented categories; follow the current Catalyst schema for exact JSON property names and allowed values.

9. Performance, reliability and cost considerations

Each request involves a sheet event, browser navigation, rendering, response handling, storage and a row update. Dynamic pages and full-page output may take longer or produce larger files than a simple viewport capture. Set timeouts based on the pages you are authorized to capture, and monitor capture, storage and update failures as separate stages.

Keep an eye on the execution limits and commercial terms for your Zoho Flow plan, Catalyst project and storage provider. The research sources do not establish current India pricing, quotas or a total per-screenshot cost, so calculate this from the applicable account plans rather than relying on a generic estimate. Retain screenshots only as long as your use case requires, and control access to the storage location and sheet links.

10. Troubleshooting

Symptom Likely cause Fix
URL field is missing from trigger data Headers have gaps, are not in the first row, or the connection uses an outdated configuration. Make headers contiguous in row one, remove merged cells, then reconnect/configure the current Sheets app with the spreadsheet ID.
Flow does not run when a cell is edited Row added detects appended rows, not edits. Use the Apps Script on-edit trigger and Flow webhook pattern.
Screenshot API rejects the request Wrong API domain or project ID, invalid JSON/options, or a URL value that was not mapped correctly. Compare the endpoint and body with the SmartBrowz docs; test with one known permitted URL and a minimal supported request.
Unauthorized or forbidden response Missing/expired OAuth token or missing ZohoCatalyst.pdfshot.EXECUTE scope. Refresh authorization and confirm the token belongs to the project and includes the required scope.
Flow cannot parse the image result The action or connector may not handle a binary response as expected. Inspect response headers and body; use a verified custom function or intermediary that can handle the documented response representation.
Screenshot exists but sheet link is empty Storage or row update step did not run, or the stored URL was not mapped. Check each step’s result, use the stable row key, and verify that the storage action returns a link suitable for the reader.
Wrong row gets updated Rows were matched by a non-unique URL or row order changed during execution. Carry a stable row identifier from the trigger and update by that identifier.
Capture times out Slow navigation, long-running scripts, or a wait condition that never completes. Use a supported wait condition and suitable timeout; isolate whether navigation or rendering is slow before retrying.
Duplicate images are created Retries, repeated webhook delivery, or status edits re-trigger capture. Add request deduplication and trigger only on the intended input change.

11. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. A single GET request can return an image or PDF. Put the API key in a Zoho-compatible HTTP action or a small intermediary, then store its response and update the sheet using the same workflow design. See the ScreenshotNeo API documentation for request parameters and setup.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://example.com"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://example.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const bytes = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', bytes));

Cookie banners, popups and chat widgets are removed before the shot. Bot checks, blank pages and failed loads are never billed. An MCP server lets AI agents use screenshot tools. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. The MCP tools include take_screenshot, get_page_info and capture_pdf. Every feature is available on every plan. For a Zoho automation, you still need to validate how your Flow account or intermediary handles the response and stores the image.

Sign up free for 1,000 screenshots a month, with no card required.

12. Frequently asked questions

Can the workflow process rows already in the sheet?

The documented Row added event is for newly appended rows. Existing rows need a separate processing method; adding a fresh request row is one straightforward operational pattern.

Does the screenshot automatically appear in Google Drive?

No such automatic persistence is established by the documented screenshot response. Configure and validate a separate storage step, then write its link into the row.

Can I use the same flow for every URL?

Only if the destination permits capture and the page can be reached and rendered under your account’s settings. Test representative pages and handle failures per row.

Is this confirmed as a no-code setup in India?

No. The India-facing Flow integration supports Google Sheets events and actions, and Catalyst documents screenshot generation. The authenticated API call and binary storage path still require verification in the specific account; India-specific pricing and limits are not established here.

Sources