UGC Techdocs
  • Introduction
  • Guides
    • Analytics
      • Tracking UGC on Adobe Analytics
      • Tracking Widget interactions with Google Analytics
    • Direct Uploader
      • How to add Custom Data to Direct Uploader
      • How to capture Custom Data on Direct Uploader
      • How to automatically tag data on Direct Uploader
      • How to Customize error messages on Direct Uploader
      • How to Track Direct Uploader form submissions with Google Analytics (Universal & GA 4)
    • Data Templates
      • Creating a Data Template
    • Rights via Registration
      • Capture Custom Data on Rights by Registration Form
      • Styling Rights via Registration Form
    • REST API
      • Caching REST API results for optimization
      • Posting content into Nosto via Tile API
      • Posting images into Nosto via Tile API
    • Onsite Widgets (2.0)
      • Blank Canvas
        • How to Use the Blank Canvas to Create a Twitter Count Widget
        • Creating an Auto-Scrolling Carousel using Blank Canvas
        • Creating Gallery Widget by Using the Blank Canvas Widget
        • Creating a simple Hover effect using Blank Canvas
        • Creating a Word Cloud using Blank Canvas
        • Creating Your Widget by Using the Blank Canvas
      • Bind your own Events
      • Creating a Grid Widget from Waterfall
      • Create a Q&A Widget using Data Templates
      • Displaying a Widget in a Mobile App
      • Dynamically Specify Products to Display in Widget
      • Dynamically specify what Tile to display in a Widget
      • How to add a title / subtitle to a widget
      • How to localize the load more button on widgets
      • How to overlay existing Google Map with the UGC Map Widget
      • How to use Filter and search in a Widget
      • How to change click on inline tile behaviour to redirect to PDP in a Widget
      • Styling cross-sellers on Grid and Carousel Widgets
      • How to Load External JS and CSS into Widgets
      • Profiling Widget Performance
      • Re-targeting with Widgets and Facebook Pixel
      • Render Widget filters dynamically
      • Styling Carousel Widget
      • Styling Grid Widget
      • Styling Masonry Widget
      • Styling Waterfall Widget
      • Styling Widget Expanded Tile
      • Styling Widget Shopspots
      • Using Web Fonts in Widgets
    • Digital Screens
      • Customizing Carousel Event Screen
      • Customizing Mosaic Event Screen
      • Customizing Scrollwall Event Screen
      • Customizing the Mosaic Event Screen to Have 9 Even Tiles
    • Email
      • Adding Location to an Email Tile
      • Styling the Email Widget
    • Integrations
      • DoubleClick
        • UGC Ads with Nosto and Google DoubleClick
      • Zapier
        • Consuming UGC Webhooks via Zapier
      • Mailchimp
        • Bring Social Content into a Mailchimp Campaign
    • Webhooks
      • Trigger notifications when content is in the moderation queue
  • Widgets
  • API Docs
    • JavaScript API
      • Widgets
        • Introduction
        • API Reference for Content Widgets
        • API Reference for Blank Canvas
        • API Reference for Map Widget
      • Digital Screens
        • Introduction
        • API Reference
    • Content API
      • Reference
    • REST API
      • Reference
        • Filters API
        • Moderation Views API
        • Tags API
        • Terms API
        • Tiles API
        • Users API
        • Widgets API
        • Automation Rules API
        • REST API Reference Widgets style and config
      • Best Practices
    • Webhooks
  • Enterprise Tools
    • Automation Rules
      • Triggers
      • Actions
      • Samples
    • Data Templates
    • User Access Control (UAC)
    • Single Sign On (SSO)
    • Enterprise Admin User Interface (EAUI)
    • Zapier
  • Commerce Tools
    • Product Feeds
    • Widget Implementation
    • Reporting
    • Integrations
      • Google Tag Manager
      • Magento
      • SalesForce Commerce Cloud
      • Shopify
      • Shopify Add To Cart
        • Global Variant Mapping for Add to Cart
        • Customise Add to Cart Widget Experience
  • Analytics
    • Google Analytics 4
      • Getting Started
      • Widgets Events
      • E-commerce Events
      • Email Events
  • Terms of Use
Powered by GitBook
On this page
  • Overview
  • Security Restrictions
  • Notification Data
  • Webhook secret key
  • Webhook Types

Was this helpful?

  1. API Docs

Webhooks

PreviousBest PracticesNextEnterprise Tools

Last updated 1 year ago

Was this helpful?

Overview

Nosto's UGC Webhooks enable callbacks to be made to your HTTP(S) endpoints when specific events have been triggered (often referred to as notifications).

For each of the Webhook types you can enter the URL of your endpoints, and Nosto's UGC will make HTTP POST requests with the relevant data to the endpoints when the events occur. The URLs entered can be different, or the same URL can be configured for all of them and the payload of the POST can be used to determine the Webhook.

To start receiving notifications, simply enter the relevant URLs in the Stackla API > Webhooks area of . To stop receiving notifications, simply remove the URL from the Webhook's field.

Webhook notifications are generally in near-realtime, however during times of very high load, there may be a delay of several seconds before the notification arrives.

Security Restrictions

Webhooks may originate from a variety of servers and IP addresses, by default. If you require to whitelist IP address ranges to receive webhooks, please contact our support team or your Customer Success Manager to organize a custom solution.

Nosto's UGC Webhooks also support appending a 'Secret Key' to the Notification if required.

This secret key uses X-Stackla-Webhook-Signature header to sign the request with a secret key.

This secret key can be used to validate the request from the client's webhook endpoint.

We do not support ip ranges, but if a client requests this, they should use ap-southeast-2 ip ranges. https://ip-ranges.amazonaws.com/ip-ranges.json

Notification Data

Notifications will arrive as HTTP POST requests, with Content-Type set to "application/json". This may mean a slightly different strategy for grabbing POST data for languages such as PHP, which will not be able to read directly from $_POST.

Webhook secret key

The secret key is sent in the HTTP header named X-Stackla-Webhook-Signature , and the value is crypto-encrypted

const signature = crypto.createHmac('sha256', secret)
            .update(data)
            .digest('hex');

Webhook Types

Nosto's UGC supports the following types of Webhooks:

TILE_CLAIM

A callback will be made via HTTP POST when an individual Tile has been claimed.

Data

Field
Description

_id

Nosto's UGC ID of the Tile

sta_feed_id

External ID provided by the UGC Feed or API posted Tile

guid

Alias of sta_feed_id

network

Name of network user belongs to (e.g. "twitter", "instagram", etc.)

network_id

ID of original content on the network

network_user_id

ID of user on the network

network_user_name

Display name of user on the network

network_user

Handle of user on the network

action

"TILE_CLAIM"

votes

Number of votes currently on the Tile

claimed_data.claimed_at

Timestamp of the claim action

claimed_data.claimed_by

Claiming method: "hashtag" (by response)

claimed_data.message

If claim is actioned by response, this will be the response message

claimed_data.custom_data.[key]

Value of the custom field key

Sample

{"_id":"5e27c2c529a27762badd642b","action":"TILE_CLAIM","sta_feed_id":"690549978851fd782e1ebc2c413f974d","guid":"690549978851fd782e1ebc2c413f974d","network":"social_network","network_id":"690549978851fd782e1ebc2c413f974d","network_user":null,"network_user_id":"550b99e2aa7ba","network_user_name":"Content Creator","original_post_url":"https://www.website.url","original_user_url":"https://www.website.url","stack_id":1234,"claimed_data":{"claimed_at":"1579664135","claimed_by":"Content Creator","message":"Rights Granted"},"updated_time":1579664135}

TILE_STATUS_UPDATE

A callback will be made via HTTP POST when an individual Tile's status has been updated.

Data

Field
Description

_id

Nosto's UGC ID of the Tile

sta_feed_id

External ID provided by the UGC Feed or API posted Tile

guid

Alias of sta_feed_id

network

Name of network the post/tile originated on (e.g. "twitter", "instagram", etc.)

network_id

ID of post on the network

action

"TILE_STATUS_UPDATE"

status

The new status of the tile: "published"

old_status

The previous status of the tile: "published"

terms

An array of the Term IDs that the tile is associated with

tags

An array of the Tag IDs that have been assigned for the Tile

updated_time

Timestamp of event generation

custom_fields.[key]

Value of the custom field key

Sample

{"_id":"5e27c2c529a27762badd642b","action":"TILE_STATUS_UPDATE","sta_feed_id":"690549978851fd782e1ebc2c413f974d","guid":"690549978851fd782e1ebc2c413f974d","network":"social_network","network_id":"690549978851fd782e1ebc2c413f974d","network_user":null,"network_user_id":"550b99e2aa7ba","network_user_name":"Content Creator","custom_fields":[],"original_post_url":"","original_user_url":"https://www.website.url","stack_id":1234,"status":"queued","terms":[12345],"tags":["12345","23456","34567"],"sentiment_score":0,"external_data":{"firstname":"Content","lastname":"Creator","email":"email@address.com", "terms_and_conditions":1,"_id":{"$oid":"5e27c2c4a15d4162ba5d8a7e"}},"old_status":"published","updated_time":1579664379}

Usage Examples

TILE_TAGS_UPDATE

A callback will be made via HTTP POST when an individual Tile has had its tags updated.

Data

Field
Description

_id

Nosto's UGC ID of the Tile

sta_feed_id

External ID provided by the UGC Feed or API posted Tile

guid

Alias of sta_feed_id

network

Name of network the post/tile originated on (e.g. "twitter", "instagram", etc.)

network_id

ID of post on the network

action

"TILE_TAGS_UPDATE"

tags

An array of the Tag IDs

old_tags

An array of the previous Tag IDs

updated_time

Timestamp of event generation

Sample

{"_id":"5e27c2c529a27762badd642b","action":"TILE_TAGS_UPDATE","sta_feed_id":"690549978851fd782e1ebc2c413f974d","guid":"690549978851fd782e1ebc2c413f974d","network":"social_network","network_id":"690549978851fd782e1ebc2c413f974d","network_user":"Content Creator","network_user_id":"550b99e2aa7ba","network_user_name":"Content Creator","custom_fields":[],"original_post_url":"","original_user_url":"","stack_id":1234,"tags":["12345","23456","34567"],"old_tags":["12345","34567"],"updated_time":1579664376}

TILE_VOTES_UPDATE

A callback will be made via HTTP POST when an individual Tile has been voted on.

Data

Field
Description

_id

Nosto's UGC ID of the Tile

sta_feed_id

External ID provided by the UGC Feed or API posted Tile

guid

Alias of sta_feed_id

network

Name of network the post/Tile originated on (e.g. "twitter", "instagram", etc.)

network_id

ID of post on the network

action

"TILE_VOTES_UPDATE"

votes

Number of current votes for the Tile

TILE_INGESTED

A callback will be made via HTTP POST when an individual tile has been ingested.

Data

Field
Description

_id

Nosto's UGC ID of the Tile

sta_feed_id

External ID provided by the UGC Feed or API posted Tile

guid

Alias of sta_feed_id

network

Name of network the post/Tile originated on (e.g. "twitter", "instagram", etc.)

network_id

ID of post on the network

action

"TILE_INGESTED"

status

The new status of the Tile: "published"

terms

An array of the Term IDs that the tile is associated with

tags

An array of the Tag IDs that have been assigned for the Tile

updated_time

Timestamp of event generation

sentiment_score

Numerical representation of the sentiment polarity

custom_fields.[key]

Value of the custom field key

Sample

{"_id":"5e27c2c529a27762badd642b","action":"TILE_INGESTED","sta_feed_id":"690549978851fd782e1ebc2c413f974d","guid":"690549978851fd782e1ebc2c413f974d","network":"sta_feed","network_id":"690549978851fd782e1ebc2c413f974d","network_user":null,"network_user_id":"550b99e2aa7ba","network_user_name":"First Name Last Name","original_post_url":"","original_user_url":"","stack_id":1277,"status":"published","terms":[49349],"tags":["111635","146566"],"sentiment_score":0,"external_data":{"firstname":"First Name","lastname":"Last Name","email":"email@address.com","ip":"59.100.203.78","terms_and_conditions_url":"http://www.stackla.com","terms_and_conditions":1},"created_time":1579664069}

TILE_LIKE_DISLIKE

A callback will be made via HTTP POST when an individual tile has been like or dislike.

Data

Field
Description

_id

Nosto's UGC ID of the Tile

sta_feed_id

External ID provided by the UGC Feed or API posted Tile

guid

Alias of sta_feed_id

network

Name of network the post/Tile originated on (e.g. "twitter", "instagram", etc.)

network_id

ID of post on the network

action

"TILE_LIKE_DISLIKE"

likes

Number of current like for the Tile

dislikes

Number of current dislike for the Tile

type

The action type: "like"

updated_time

Timestamp of event generation

Usage Examples

USER_UPDATE

A callback will be made via HTTP POST when a new user is successfully registered or an existing user profile is updated.

Data

Field
Description

id

Nosto's UGC ID of the User

name

User First Name

surname

User Last Name

type

The action type: "added"

username

Username

action

"USER_UPDATE"

display_timezone

User Timezone

email

User Email Address

created

Timestamp of event generation

ASSET_CREATED

A callback will be made via HTTP POST when

Data

Sample

{"workflow_status":"approved","from":"goconnect","created_at":1579664073,"title":"Content Creator - GoConnect - 22nd Jan 2020 03:34 UTC","note":"","tags":["12345","23456"],"tile":{"_id":"5e27c2c529a27762badd642b","source":"social_network","source_created_at":1579664065,"source_unique_id":"sta_feed:690549978851fd782e1ebc2c413f974d","source_user_id":"550b99e2aa7ba","user":null,"name":"Content Creator","original_url":"https://www.website.url","claimed":true,"message":"Sample Message"},"type":"image","thumbnail":{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-small.jpg","mime":"image/jpeg","size":31438,"width":640,"height":359},"media":{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-medium.jpg","mime":"image/jpeg","size":102029,"width":1280,"height":719,"orientation":"landscape","dimension":"m"},"media_files":[{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-medium.jpg","mime":"image/jpeg","size":102029,"width":1280,"height":719},{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-large.jpg","mime":"image/jpeg","size":226643,"width":1824,"height":1024},{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-small.jpg","mime":"image/jpeg","size":31438,"width":640,"height":359}],"_id":"5e27c2c875986fa79afb6621"}

ASSET_UPDATED

A callback will be made via HTTP POST when

Data

Sample

{"workflow_status":"approved","from":"goconnect","created_at":1579664073,"title":"Content Creator - GoConnect - 22nd Jan 2020 03:34 UTC","note":"","tags":["12345","23456"],"tile":{"_id":"5e27c2c529a27762badd642b","source":"social_network","source_created_at":1579664065,"source_unique_id":"sta_feed:690549978851fd782e1ebc2c413f974d","source_user_id":"550b99e2aa7ba","user":null,"name":"Content Creator","original_url":"https://www.website.url","claimed":true,"message":"Sample Message"},"type":"image","thumbnail":{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-small.jpg","mime":"image/jpeg","size":31438,"width":640,"height":359},"media":{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-medium.jpg","mime":"image/jpeg","size":102029,"width":1280,"height":719,"orientation":"landscape","dimension":"m"},"media_files":[{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-medium.jpg","mime":"image/jpeg","size":102029,"width":1280,"height":719},{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-large.jpg","mime":"image/jpeg","size":226643,"width":1824,"height":1024},{"url":"https://uploads-cdn.stackla.com/10/stack/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-small.jpg","mime":"image/jpeg","size":31438,"width":640,"height":359}],"_id":"5e27c2c875986fa79afb6621" "updated_at":1579664845,"oldValues":{"workflow_status":"approved","title":"Previous Title - GoConnect - 22nd Jan 2020 03:34 UTC","note":"","tags":["111635","146566"],"updated_at":1579664844}}

MANUAL_TILE_UPDATE

A callback will be made via HTTP POST when

Data

Sample

{"_id":"5e27c2c529a27762badd642b","avatar":null,"claimed":true,"claimed_by":"goconnect","created_at":1579664069,"image":"https://uploads-cdn.stackla.com/10/stackla/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-medium.jpg","lang":"en","media":"image","message":"Message","tags":["12345","23456","34567"],"updated_at":1579664381,"claimed_data":{"claimed_at":"2020-01-22T03:34:25.000Z","claimed_by":"goconnect","message":"Message"},"network_user_name":"Content Creator","original_post_url":"https://www.website.url","network":"social_network","network_user_id":"550b99e2aa7ba"}

MANUAL_ASSET_UPDATE

A callback will be made via HTTP POST when

Data

Sample

{"_id":"5e27c2c875986fa79afb6621","from":"goconnect","title":"Content Creator - GoConnect - 22nd Jan 2020 03:34 UTC","note":"","tags":[12345,23456],"type":"image","media_files":[{"url":"https://uploads-cdn.stackla.com/10/stackla/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-medium.jpg","mime":"image/jpeg","size":102029,"width":1280,"height":719},{"url":"https://uploads-cdn.stackla.com/10/stackla/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-large.jpg","mime":"image/jpeg","size":226643,"width":1824,"height":1024},{"url":"https://uploads-cdn.stackla.com/10/stackla/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-small.jpg","mime":"image/jpeg","size":31438,"width":640,"height":359}],"created_at":1579664073,"thumbnail":{"url":"https://uploads-cdn.stackla.com/10/stackla/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-small.jpg","mime":"image/jpeg","size":31438,"width":640,"height":359},"media":{"url":"https://uploads-cdn.stackla.com/10/stackla/2020-01-22/5e27c2b17bd4e/42dd99b4ac68a4f5cbfadf2fb19dafa3-medium.jpg","mime":"image/jpeg","size":102029,"width":1280,"height":719}}

your Stack's Admin Portal
Trigger notifications when content is in the moderation queue
Trigger notifications when content is in the moderation queue
TILE_CLAIM
TILE_STATUS_UPDATE
TILE_TAGS_UPDATE
TILE_VOTES_UPDATE
TILE_INGESTED
TILE_LIKE_DISLIKE
USER_UPDATE
ASSET_CREATED
ASSET_UPDATED
MANUAL_TILE_WEBHOOK
MANUAL_ASSET_WEBHOOK
Back to top
Back to top
Back to top
Back to top
Back to top
Back to top
Back to top
Back to top
Back to top