How do I use Webhooks?

Edited

Contents of this article


What is a webhook?

Webhooks are a high-performance alternative to email alerts, designed for users who need to process change notifications with structured data. When Visualping detects a change, it "pushes" a JSON payload directly to your endpoint, allowing you to instantly trigger workflows in platforms like Zapier, n8n, Slack, or custom internal tools.

The payload provides everything you need to automate your response:

  • Direct Links: Access to screenshots, HTML snapshots, and processed PDF files.

  • Context: Timestamps, job descriptions, and labels.

  • Structured Data: AI-generated summaries, important alert flag and custom data extraction for specific fields.


How to set up a webhook

Step 1:

Copy the webhook's URL

Obtain a webhook URL from the platform you intend on using Visualping with. Some commonly used apps are:

Step 2:

Enable Webhook notifications

Open the Notifications tab in the job settings and click on Webhook.

Step 3:

Connect the Webhook

Paste the Webhook URL into the URL field. If the URL is not valid, an inline warning will appear and the Test button will remain disabled until a valid URL is entered. Once a valid URL is detected, click Test to push a test JSON payload to the third-party app and confirm the connection.

  • Green check mark - Success

  • Red X mark - Fail

Pro Tip: To scale your automation, use bulk edit to apply a single webhook URL to multiple jobs simultaneously. You can also save your URL as a preset and set it as the workspace default to automatically configure webhooks for every new job you create.


Webhook variables

All standard variables are included in every alert. However, conditional fields are omitted from the payload entirely if they are not active for that specific job.

Key

Data Type

Description

job_id

integer

Unique identifier for the monitoring job.

workspace_id

integer

Unique identifier for the workspace containing this job (present in business plans)

workspace_name

string

The workspace name (present in business plans)

url

string (url)

The URL being monitored for changes

description

string

User-defined job name or description for this monitoring job

datetime

string

Timestamp when the change was detected (UTC format)

original

string (url)

URL to the original (baseline) screenshot image

current

string (url)

URL to the current screenshot image

preview

string (url)

URL to a preview image highlighting the visual differences

html_previous

string (url)

URL to the HTML snapshot of the previous page version

html_current

string (url)

URL to the HTML snapshot of the current page version

change

string

Percentage of visual change detected (e.g., '10 %')

view_changes

string (url)

Link to view the detected changes in the dashboard

job_settings

string (url)

Link to the job settings in the dashboard

visual_changes

string (url)

Shareable link to view visual changes

text_changes

string (url)

Shareable link to view text changes

added_text

string

Semicolon-separated list of text content that was added to the page

removed_text

string

Semicolon-separated list of text content that was removed from the page

advancedfiletype_original_previous

string (url)

URL to download the original PDF file from the previous check. (Omitted if the job is not monitoring a PDF).

advancedfiletype_original_current

string (url)

URL to download the original PDF file from the current check. (Omitted if the job is not monitoring a PDF).

labels

string

Comma-separated list of user-defined labels. (Omitted if no labels are assigned).

summarizer

string

AI-generated summary of the detected changes

important

string

Indicates if the change is flagged as important by AI (values: "true" or "false"). Requires text input in "Alert me when:" or "Any important changes".

good_feedback

string (url)

Link to submit positive feedback on the change detection

bad_feedback

string (url)

Link to submit negative feedback on the change detection

extracted_data

object (JSON)

Custom data extracted from the page. Requires a Solutions plan. Omitted if not configured.


Webhook payload example

Below is an example of the JSON payload sent to your webhook endpoint.

{

  "job_id": 12344567,
  "workspace_id": 12345,
  "workspace_name": "my workspace",
  "url": "https://www.visualping.io/",
  "description": "Example job name",
  "datetime": "Thu Apr 24 2025 17:10:41 GMT+0000 (Coordinated Universal Time)",
  "original": "https://vp-public-assets.s3.us-west-2.amazonaws.com/emails/onboarding-emails/text-change-alerts.png",
  "current": "https://vp-public-assets.s3.us-west-2.amazonaws.com/emails/onboarding-emails/text-change-alerts.png",
  "preview": "https://vp-public-assets.s3.us-west-2.amazonaws.com/emails/onboarding-emails/text-change-alerts.png",
  "html_previous": "https://vp-public-assets.s3.us-west-2.amazonaws.com/emails/onboarding-emails/text-change-alerts.html",
  "html_current": "https://vp-public-assets.s3.us-west-2.amazonaws.com/emails/onboarding-emails/text-change-alerts.html",
  "change": "10 %",
  "view_changes": "https://visualping.io/autologin?redirect=%2Fjobs%2F5922158%3Fmode%3Dtext",
  "job_settings": "https://visualping.io/autologin?redirect=%2Fjobs%2F5922158%3Fmode%3Dtext",
  "visual_changes": "https://visualping.io/diff/123456789?disableId=1234567890abcde&mode=visual",
  "text_changes": "https://visualping.io/diff/123456789?disableId=1234567890abcde&mode=text",
  "added_text": "Added text",
  "removed_text": "Removed text",
  "advancedfiletype_original_previous": "https://vp-public-assets.s3.us-west-2.amazonaws.com/emails/onboarding-emails/text-change-alerts.pdf", // Omitted if the job is not monitoring a PDF.
  "advancedfiletype_original_current": "https://vp-public-assets.s3.us-west-2.amazonaws.com/emails/onboarding-emails/text-change-alerts.pdf", // Omitted if the job is not monitoring a PDF.
  "labels": "⚽ label1, 🎁 label2",
  "summarizer": "Example change summary",
  "important": "false", // Requires text input in "Alert me when:" or "Any important changes" to return "true" or "false", otherwise "no analyzer call".
  "good_feedback": "https://visualping.io/feedback?id=0&jobId=0&vote=GOOD&processId=0&source=Webhook",
  "bad_feedback": "https://visualping.io/feedback?id=0&jobId=0&vote=BAD&processId=0&source=Webhook",
  "extracted_data": { 
    "product_price": "$99.99",
    "stock_status": "In Stock",
    "last_updated": "2024-05-01"
  }, // Omitted if custom data extraction is not enabled
}

Note: The extracted_data object supports flexible structures, including nested keys and arrays, depending on your specific data requirements. Contact us for more details.


Frequently Asked Questions

Why are some variables, like labels or advancedfiletype, missing from my webhook payload?

To keep the data payload clean and efficient, Visualping omits certain fields entirely if they aren't applicable to the specific job. For example, PDF download links only appear if you are monitoring a PDF file, and the labels key is only included if you have assigned labels to that job. If a field is missing, it simply means there was no data to report for that specific attribute.

How can I include custom website data (like price or stock status) in my webhook?

You can use the extracted_data variable to send specific data points from a webpage directly to your endpoint. This feature allows for structured JSON output of specific fields (supporting nested keys and arrays). This is a premium feature available on our Solutions plan. If you need custom data extraction, please contact our support team to have it configured for your jobs.


Related article

Was this article helpful?

Sorry about that! Care to tell us more?

Thanks for the feedback!

There was an issue submitting your feedback
Please check your connection and try again.