Author picture Fongang Rodrique

How to Receive and Replay Webhooks with Google Cloud Run functions using Hookdeck

Published · Updated


Webhooks are frequently used in modern application development, enabling real-time communication and data exchange between external services such as APIs and internal services. In the Google Cloud environment, efficiently receiving and handling webhooks is essential for building event-driven applications.

Hookdeck is a reliable event gateway for managing inbound webhooks, including monitoring and replaying failed events. By integrating Hookdeck with Google Cloud Run functions, you can improve the reliability and management of your webhook events, ensuring smooth integration with external platforms.

In this article, we will explore how to receive and replay webhooks with Google Cloud Functions using Hookdeck.

Create a Google Cloud Run function

To handle incoming webhook events, you first need to set up a Google Cloud Run function. This serverless execution environment allows you to connect various cloud services through event-driven functions.

Prerequisites:

  • A Google Cloud account with billing enabled.
  • Familiarity with creating Google Cloud Functions using the Google Cloud Console.

Steps to create a Google Cloud Run function

  1. Log in to your Google Cloud Console and create or select an existing project.

  2. Click on the hamburger menu on the left, then select APIs and services > Enabled APIs and services.

  3. Click + ENABLE APIS AND SERVICES to add an API service. This opens the API Library.

    Enable Google Cloud Run function Services

  4. Select and enable the Cloud Functions API and Cloud Build API for your project.

  5. Open the Cloud Run functions page from the list of products in the Google Cloud Console.

    Open Cloud Run function

  6. Click +CREATE FUNCTION to create a new function.

  7. Configure the properties of your function and then click Next:

    • Choose Cloud Run function for the environment
    • Provide a name for your function, such as "webhook-handler"
    • In the Region dropdown, select the region where you want to deploy your function
    • Select HTTPS as the Trigger type
    • In the Authentication field, select Allow unauthenticated invocations for this guide. It's advisable to secure your function with authentication when exposing it to the public. Learn more about Google Cloud Run function authentication.

    Creating Google Cloud Run function

  8. Choose your desired language runtime from the Runtime dropdown (e.g., Node.js 20).

  9. Set the entry point to the function name (e.g., "webhookHandler").

  10. In the Source code field, select Inline editor and replace the content of the editor with the following example code:

    const functions = require("@google-cloud/functions-framework");
    
    functions.http("webhookHandler", (req, res) => {
      if (req.method !== "POST") {
        res.status(405).send("Only POST requests allowed");
        return;
      }
    
      const payload = req.body;
      console.log("Webhook received:", payload);
    
      res.status(200).send("Webhook processed successfully");
    });
    
  11. Click Deploy to deploy the function.

After deployment, the function will be active, indicated by a green checkmark. Note the function's URL—this will be needed for configuring Hookdeck.

Deploy Cloud Run function

Replay webhooks

Hookdeck provides a reliable way to bridge webhooks from your source platform to Google Cloud Run functions. It also enables you to replay failed events that were not successfully delivered to the function.

Create a Hookdeck connection

  1. Sign up or log in to your Hookdeck dashboard.
  2. Click on Connections in the side panel, then click +Connection to add a new connection.
  3. Fill in the necessary information about the connection:
    • Source: Specify the source platform or application you want to receive webhooks from.
    • Destination: Enter the URL of your Google Cloud Run function.
  4. Click Create to create the connection.

Create Hookdeck Cloud Run function connection

Hookdeck provides you with a URL that you can use on the source platform to send webhook events.

Receive webhook events

You can utilize the Hookdeck Console to simulate sending sample webhook events from popular webhook sources.

Imagine your webhook source is GitHub. When an event is triggered, you can monitor it both on the Hookdeck dashboard and in your Google Cloud Run function logs.

In your Hookdeck dashboard, go to the Events tab in the side panel. Filter the events based on the connection you created earlier to view its activities.

Cloud Run function Hookdeck Event

In your Google Cloud Console, navigate to the Cloud Run function you deployed. Check the logs to see the incoming events and their processing status.

Google Cloud Console logs

Replaying error or failed webhooks

Hookdeck offers a webhook replay feature, allowing you to resend failed events to your Google Cloud Run function if they were not processed correctly.

To replay a failed webhook event:

  1. From the Hookdeck Event panel, locate the failed event you want to replay.
  2. Click on the Retry icon across it. This attempts to resend the event to your Google Cloud Run function, giving it another opportunity to process the event successfully.

Replay Google Cloud Run function

Conclusion

By integrating Hookdeck with Google Cloud Run functions, you can easily receive and replay webhook events, ensuring reliability and fault tolerance in your event-driven applications. Hookdeck's powerful features, such as transformations, filters, unified security, routing, and analytics, allow you to effectively manage and troubleshoot webhooks from external platforms.

Explore Hookdeck's documentation for more information on how to integrate and manage webhooks in your solutions.