Webhook provides a powerful way to send real-time data to external systems, eliminating the need for manual exports or constant updates.
By leveraging webhooks in Snappic, you can automatically send shared data to Google Sheets as soon as it's captured in your app. This ensures that your spreadsheets remain instantly updated with the latest event data, saving time and streamlining your workflow.
This guide will walk you through setting up webhooks to integrate Snappic with Google Sheets, making your data management seamless and efficient.
Table of Contents
Important Notes
Currently, webhooks only support Share Data. If you need additional data capture functionalities, you can submit a feature request here.
For a visual, step-by-step video tutorial on webhooks with Google Sheets, click here.
Webhooks are available as add-ons or included in the following Snappic packages:
Packages that support Webhooks:
Pro Photographer (add-on)
Agency (add-on)
Business (add-on)
Premium (included)
Scale (included)
They are not available on the Starter (formerly Pro Booth) package.
Understanding Webhooks
A webhook is a way for one system to automatically send real-time data to another system. Instead of manually requesting data, your system will receive it as soon as an event occurs. Think of it like a notification system—when something happens on our platform, we send the relevant information to your webhook URL.
To use webhooks, you need a service or server on your end that can receive and process the data. This means setting up an endpoint (a specific URL) that can accept incoming HTTP POST requests and handle the JSON payload we send.
Our platform allows customers to configure a webhook endpoint, to which our system will push event-related data whenever a significant action occurs. Below is an overview of the data format sent to your webhook, along with explanations for each key component.
How to Set Up Webhooks with Google Sheets
Adding webhooks to Google Sheets
Open Google Sheets and create a new spreadsheet then click on Extensions > Add-ons > Get add-ons.
Search for Webhooks for Sheets and Install.
Configure Webhooks in Google Sheets
After installation, open Webhooks for Sheets.
When creating your webhook, ensure you enable the option to accept POST requests.
Click on "Create" to generate a URL that you can paste into Snappic.
Setting up Webhooks on The Snappic Dashboard
In your Snappic dashboard, Enable Webhook under the "Event Options."
Paste your copied Google Sheets webhook URL into the "Webhook URL" field.
Click Verify URL. Snappic will send a test request to confirm the endpoint's validity.
Use Send Test to confirm data appears correctly in your Google Sheet.
Once verified, click Save to activate the webhook.
Setting up Custom Webhooks (Advanced)
Webhooks allow you to receive automatic notifications when specific events happen in your photobooth experience. When an event occurs, we'll send data to a URL you specify, letting you integrate with your own systems in real-time.
Setting Up Webhooks
Go to your event settings in the dashboard
Navigate to the Webhooks section
Enter your webhook URL (must be HTTPS)
Click Verify to test the connection
Use the Send Test button to receive sample data
Webhook Types
Session Webhook
When it's sent: Each time a photo, GIF, video, or AI-generated image is captured.
What you receive:
Unique session identifier
Direct link to the media file
Link to the microsite page where the photo can be viewed/shared
Type of session (still photo, GIF, video, or AI-generated)
Device information (which device captured the session)
Template IDs used
Example:
{
"type": "session",
"event_id": 1,
"session": {
"id": "abc123xyz",
"direct_url": "https://cdn.example.com/sessions/photo.jpg",
"site_url": "https://photos.example.com/view/abc123xyz",
"type": "still",
"device": {
"id": 42,
"name": "iPad Pro - Main Booth",
"device_info": "iOS 17.0"
},
"still_template_id": 123,
"gif_template_id": 456
}
}
Share Webhook
When it's sent: Each time someone shares their photo via email or SMS.
What you receive:
Session details (ID, URLs, type)
How it was shared (email or SMS)
The recipient's contact information
Any data capture form responses collected
Example:
{
"type": "share",
"event_id": 1,
"session": {
"id": "abc123xyz",
"direct_url": "https://cdn.example.com/sessions/photo.jpg",
"site_url": "https://photos.example.com/view/abc123xyz",
"type": "still"
},
"share": {
"id": "share789",
"type": "email",
"value": "[email protected]"
},
"data_capture": {
"sections": [
{
"title": "Contact Information",
"position": 0, "fields": [
{
"field_id": "email_1",
"field_title": "Email Address",
"field_type": "email",
"value": "[email protected]",
"required": true
}
]
}
]
}
}
Survey Webhook
When it's sent: Each time someone completes a survey or data capture form.
What you receive:
Session details (ID, URLs, type)
When the survey was completed
All form responses organized by section
Example:
{
"type": "survey",
"event_id": 1,
"session": {
"id": "abc123xyz",
"direct_url": "https://cdn.example.com/sessions/photo.jpg",
"site_url": "https://photos.example.com/view/abc123xyz",
"type": "still"
},
"survey": {
"completed_at": "2025-01-15T14:30:00+00:00",
"data_capture": {
"sections": [
{
"title": "Feedback",
"position": 0,
"fields": [
{
"field_id": "rating_1",
"field_title": "How was your experience?",
"field_type": "rating",
"value": "5",
"required": true
},
{
"field_id": "text_1",
"field_title": "Any comments?",
"field_type": "text",
"value": "Had a great time!",
"required": false
}
]
}
]
}
}
}
Competition Win Webhook
When it's sent: Each time someone wins a prize in a competition (e.g., scratch card game).
What you receive:
Session details (ID, URLs, type)
Competition information
Prize details (name, images, winning message)
Winner's contact information
Prize redemption QR code URL
Any data capture form responses
Example:
{
"type": "competition_win",
"event_id": 1,
"session": {
"id": "abc123xyz",
"direct_url": "https://cdn.example.com/sessions/photo.jpg",
"site_url": "https://photos.example.com/view/abc123xyz",
"type": "still"
},
"competition": {
"id": 1,
"type": "scratch"
},
"prize_win": {
"id": "win456",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"win_id": "WIN001",
"date": "2025-01-15T14:30:00+00:00",
"valid": true,
"win_image_qr_url": "https://cdn.example.com/prizes/qr/win456.png"
},
"prize": {
"id": 1,
"name": "Free Coffee",
"winning_text": "Congratulations! You've won a free coffee!",
"image_url": "https://cdn.example.com/prizes/coffee.png",
"winning_image_url": "https://cdn.example.com/prizes/coffee-winner.png"
},
"winner": {
"type": "email",
"value": "[email protected]"
},
"data_capture": {
"sections": []
}
}
Common Data Fields
Field | Description |
| The webhook type: |
| Your event's unique identifier |
| Unique identifier for the photo session |
| Direct link to download the media file |
| Link to the microsite page for viewing/sharing |
| Type of content: |
Session Types
Type | Description |
| A single photo |
| An animated GIF |
| A video recording |
| An AI-generated or AI-enhanced image |
Retry Policy
If your webhook endpoint doesn't respond with a success code (200-299), we'll automatically retry the delivery:
Up to 3 retry attempts
10 second delay between retries
After 3 failed attempts, the webhook is marked as failed
You can manually retry failed webhooks from the Webhooks section in your event settings.
Security
Each webhook request includes an X-Signature header containing an HMAC-SHA256 signature. You can use this along with your secret key (shown in the webhook settings) to verify that requests are genuinely from our system.
Troubleshooting
Webhooks not being received?
Ensure your URL is using HTTPS
Check that your endpoint returns a 200-299 status code
Verify your URL is publicly accessible
Too many failed webhooks?
After 10 consecutive failures, webhooks are automatically paused
Fix your endpoint and use the "Retry Failed Requests" button to resume
Need Help? Contact Support
Visit the Snappic Help Center
Chat directly from your dashboard for live support










