Skip to main content

How to use Webhooks

Automatically Send Snappic Share Data to Google Sheets using Webhooks.

Marco avatar
Written by Marco
Updated over a week ago

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

  1. Go to your event settings in the dashboard

  2. Navigate to the Webhooks section

  3. Enter your webhook URL (must be HTTPS)

  4. Click Verify to test the connection

  5. 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

type

The webhook type: session, share, survey, or competition_win

event_id

Your event's unique identifier

session.id

Unique identifier for the photo session

session.direct_url

Direct link to download the media file

session.site_url

Link to the microsite page for viewing/sharing

session.type

Type of content: still, gif, video, or ai

Session Types

Type

Description

still

A single photo

gif

An animated GIF

video

A video recording

ai

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

Did this answer your question?