ScreenshotNeo

BlogHow-to

How to Capture Website Screenshots from Zoho CRM Leads in Zoho Flow

Use Zoho Flow to capture a new lead’s website and attach the screenshot or a durable link to its CRM record.

By the ScreenshotNeo team4 October 20268 min read

Yes. Configure a Zoho Flow triggered by a new Zoho CRM lead, send the lead’s website URL to a screenshot service with an outgoing webhook, then attach the resulting image or a durable link to that lead’s CRM record. The trigger, outgoing webhook, and CRM attachment API are documented capabilities; the exact screenshot-provider request and binary handoff depend on the provider and Flow configuration, so validate that part in your account.

1. Choose how the flow starts

There are two practical trigger patterns:

  • Zoho CRM app trigger: In Zoho Flow, create a flow with Zoho CRM as the trigger app and choose the new-lead event. This is the direct route when the trigger is available for your account.
  • CRM webhook to Flow: Create a Flow webhook trigger, then configure a Zoho CRM webhook for the Leads module to send record data to Flow’s unique webhook URL. Flow accepts JSON, form data, or plain text and can expose fields from a sample payload to later steps.

Prefer the app trigger for simpler setup. Use the webhook pattern when you need more control over the event payload or the direct trigger is unavailable. Confirm the chosen event fires for the way leads are created in your organization, including imports or integrations if those matter.

2. Confirm the lead ID and website field

  1. Create a test lead with a website value you can safely capture.
  2. Run or test the trigger and inspect the fields Flow received.
  3. Identify the lead’s record ID and the website URL field. CRM layouts, field configuration, and locale can affect the field name; do not assume a universal API name.
  4. Check for an empty value, whitespace, or a value missing its URL scheme. Decide whether to skip the capture or normalize the input before calling the screenshot service.

For a Flow webhook trigger, send a sample event and use Flow’s field-detection step so later actions can map the record ID and website value. Keep the payload limited to the fields the workflow needs.

3. Call a screenshot service

Add an outgoing webhook action after the trigger. Configure it as an HTTP request to the screenshot service, map the lead website into the provider’s URL parameter, and supply authentication and output options required by that provider. Zoho describes outgoing webhooks as HTTP requests to external applications or services. The Zoho documentation does not specify a screenshot API schema, response format, or a turnkey binary mapping, so check your chosen provider’s API documentation and test the response in Flow before building the attachment step.

For ScreenshotNeo, a GET request to its screenshot endpoint returns an image or PDF. The following cURL request uses the lead website as the target; replace the example URL and API key with your mapped lead field and key. See the ScreenshotNeo API documentation for request options.

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

That command is a standalone illustration, not a claim that Zoho Flow can run shell commands. In Flow, configure an HTTP outgoing webhook with the equivalent method, endpoint, query parameters, and authentication. Confirm whether the response is available to subsequent actions as binary data, a file, or a URL.

Zoho CRM’s attachment API supports adding either a file or a link to a record. The endpoint form is POST /{module_api_name}/{record_ID}/Attachments; for a lead, use the Leads module API name and the lead ID from the trigger. The operation accepts a file or an attachment URL in one call, not both.

Choose the route based on the screenshot response:

  • Provider returns a stable, accessible URL: Attach the link. Check whether the URL is public, requires authorization, or expires. An expiring or inaccessible URL may be a poor long-term CRM attachment.
  • Provider returns image bytes: Upload a file using the CRM attachment API’s multipart form request. Confirm that your Flow action can pass the response bytes in the required multipart format. The cited Zoho documentation does not establish that every provider response can be transferred this way through Flow.

Use the attachment concept for screenshot context or evidence. The CRM record photo endpoint is a separate feature for the lead’s display photo. Its documented limits of 10 MB and 10 megapixels apply to that photo endpoint; do not treat them as attachment upload limits.

Authorize the CRM API action with a suitable Zoho connection and the necessary module and attachment scopes. Grant only the access required to create attachments. Avoid putting API secrets in an unprotected payload or URL.

5. Test the complete workflow

  1. Use a safe test lead and verify the selected trigger fires once as expected.
  2. Inspect the trigger data and confirm the record ID and website URL map correctly.
  3. Check that the screenshot request receives the expected URL, authentication, and render options.
  4. Inspect the screenshot response and verify whether Flow exposes usable file bytes or a URL.
  5. Confirm the attachment action targets the same lead and creates the expected file or link.
  6. Repeat with a missing URL, malformed URL, inaccessible site, and a site that leads to an authentication page.
  7. Check what happens when the same lead event is replayed or retried, so you understand whether duplicate attachments can result.

These are validation steps, not reported test results. Zoho’s documentation establishes the component capabilities, but not a provider-specific end-to-end recipe.

Configuration choices and edge cases

Decision What to check
Trigger type App trigger setup simplicity versus webhook event and payload control; confirm the needed trigger is available.
Website field Verify the actual field name and value in a sample event; handle empty or malformed values explicitly.
Screenshot options Set only options supported by the selected provider. Consider output format and whether the site needs extra render time or authentication.
Attachment form Choose file upload for bytes or link attachment for a durable URL. Do not send both in one attachment call.
Retries and duplicate events Determine whether Flow retries failed steps and whether replaying an event can add a second attachment. Define a deduplication approach if duplicates matter.
Credentials Use protected connections or supported secret handling; limit CRM scopes to the required operation.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server from ScreenshotNeo. A single GET request captures a URL as PNG, JPEG, WebP, or PDF. Its API can serve as the screenshot step in this workflow; validate how your Flow configuration passes the response to the CRM attachment action.

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

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Cookie banners, newsletter popups, and chat widgets are removed before the shot, and each step can be turned off. Bot checks, blank pages, and failed loads are never billed; response headers identify the page verdict and billing status. An MCP server provides screenshot tools for AI agents. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Read the API docs and sign up for 1,000 free screenshots a month with no card.

Troubleshooting

Symptom Likely cause What to do
The flow does not run for a new lead The wrong event or module is selected, or the lead was created through a path that does not trigger the configured event. Test the trigger with a new record, verify the Leads module and event, and check whether the app trigger or CRM webhook pattern fits your creation path.
The website is blank in later steps The trigger payload did not include the expected field, or the field API name differs from the assumed name. Inspect a sample payload and remap the actual website field; make missing values skip the screenshot action.
The screenshot request fails Incorrect endpoint, URL encoding, missing credentials, or provider-specific parameter mismatch. Check the provider’s API documentation, encode the target URL as a query parameter, and verify authentication without exposing the secret.
The screenshot step succeeds but attachment fails Flow may expose a response body in a form the CRM multipart upload cannot consume, or the CRM authorization lacks required scopes. Inspect the action output, verify CRM connection scopes, and test file upload and URL attachment as separate supported paths.
The CRM record has a broken attachment link The provider URL is private, temporary, or expired. Use a durable URL with suitable access or transfer the image as a file if your Flow path supports multipart upload.
The same screenshot appears more than once A repeated event, retry, or manual replay created a second attachment. Check Flow execution history and define a duplicate-handling rule suitable for your workflow.
The screenshot shows a sign-in page or challenge The target website requires authentication or blocks automated access. Confirm the page is intended to be publicly viewable and use provider-supported authentication options where appropriate. Do not assume a screenshot service can access every protected page.

Performance, reliability, and cost

Each lead adds an external page render and a CRM attachment operation, so total workflow time depends on target-site loading, the screenshot service, and the CRM API. Use the smallest output that meets your record-keeping need and avoid unnecessary render waits. If the workflow handles many leads, check your Flow and API limits in the current Zoho documentation and account; the sources used here do not establish plan-specific throughput or retry guarantees.

For reliability, validate the URL before capture, retain enough execution history to diagnose failures, and decide how to handle a successful screenshot followed by a failed attachment. A durable link avoids transferring image bytes through Flow, but depends on the link remaining accessible. A file attachment keeps the image in CRM, but requires a compatible multipart path. ScreenshotNeo bills only clean shots; bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers report verdict and billing status. Its plans are Free with 1,000 monthly shots, Starter at $5 for 3,000, Growth at $15 for 15,000, Pro at $39 for 60,000, Scale at $99 for 250,000, and Business at $249 for 1,000,000; annual billing gives two months free, and every feature is available on every plan.

FAQ

Can Zoho Flow take a screenshot by itself?

The documented approach uses an external screenshot API called by an outgoing webhook. The sources do not identify a built-in Zoho Flow screenshot action.

Can I attach the lead’s website screenshot as its CRM display photo?

The record photo endpoint is separate from attachments. For website context, attach the screenshot or a link instead of changing the lead’s display photo.

Does a screenshot provider’s image response automatically upload to CRM?

That transfer is not established by the cited Zoho docs. Verify the response format and whether your Flow path can pass binary data as the multipart file required by CRM.

Can I use a Flow webhook instead of the CRM app trigger?

Yes. CRM can send event data to Flow’s unique webhook URL; use a sample payload to expose fields and map the lead ID and website URL.