Skip to content

Latest commit

 

History

History
199 lines (137 loc) · 8.16 KB

google-pub-sub.md

File metadata and controls

199 lines (137 loc) · 8.16 KB
description
Step-by-step guide to send event data from RudderStack to Google Pub/Sub.

Google Pub/Sub

Google Pub/Sub is an asynchronous messaging service that allows you to decouple the services that produce events from the services that process events. With Pub/Sub, you get durable message storage as well as a real-time message delivery system. The Google Pub/Sub servers run reliably with a consistent performance in all the Google Cloud regions over the world.

RudderStack allows you to configure Google Pub/Sub as a destination and send your event data to it directly.

{% hint style="success" %} Find the open-source transformer code for this destination in our GitHub repo. {% endhint %}

Getting Started

To enable sending data to Google Pub/Sub, you will first need to add it as a destination to the source from which you are sending your event data. Once the destination is enabled, events from our SDK will start flowing to Google Pub/Sub.

Connection Mode Web Mobile Server
Device mode - - -
Cloud mode Supported Supported Supported

{% hint style="info" %} To know more about the difference between Cloud mode and Device mode in RudderStack, read the RudderStack connection modes guide. {% endhint %}

Once you have confirmed that the platform supports sending events to Google Pub/Sub, perform the steps below:

{% hint style="info" %} Please follow our Adding a Source and Destination guide to add a source and destination in RudderStack. {% endhint %}

  • Give a name to the destination and click on Next. You should then see the following screen:

Google Pub/Sub Connection Settings

  • Enter the following details:
    • Connection Settings
      • Project ID and the Credentials: Follow these steps to obtain the project ID as well as the required credentials:
        • Create a service account from Google Cloud Console.
        • You can get the Project ID when you log in to your Google Cloud Console.
        • Use the Select a role dropdown to add the Pub/Sub Publisher role.
        • Create a key as JSON and download it.
        • Paste this downloaded JSON in the Credentials field
      • Enter the Event Name as well as the corresponding Topic ID. You can get the topic id from your topics page, as shown:

Google Pub/Sub Topic ID and Name

{% hint style="info" %} You can send an event type like page, identify, track.
For the track events you can specify the event name based on the event name in the payload.

For example:

  • If the event name is page it will send all the calls with the type page.
  • If the event name is product added , it will send all the track events with the event as product added. {% endhint %}

{% hint style="success" %} If you want to send all the events to a particular stream irrespective of the type or name, you can use * as the event name. {% endhint %}

{% hint style="warning" %} The topic ID is case-sensitive and has to be exactly as seen in Google Pub/Sub. On the other hand, the event name is case insensitive, and thus Page or page will both be considered as valid. {% endhint %}

  • Finally, click on Next to complete the configuration. Pub/Sub should now be added and enabled as a destination in RudderStack.

Attributes

You can send attributes to Google Pub/Sub along with the message. In order to send the attributes, enter the required attribute mapping in the RudderStack dashboard as seen below:

The following are some examples:

  • If the event is Product Viewed and the key is coupon, RudderStack will add the coupon key-value pair from the message to the attributes' metadata object.
  • If multiple mappings are provided for Product Viewed, all such key-value pairs from the message body will be added to attributes' metadata object.
  • If the event name is page it will send all the calls with the type page.

{% hint style="warning" %} For the key fields provided in the attributes map, the key is searched in the message body in root, properties, traits and context.traits - in that specific order. {% endhint %}

Note: You can also specify the key path in the payload using the dot notation.

For example:

rudderanalytics.track("Track me", {
  category: "category",
  label: "label",
  value: "value",
  metadata: {
    metadataId: "sample-id"
  }
});

For the above track call, you can specify an attribute mapping for metadataID as shown below:

Event Field
Track me metadata.metadataId

This will create the below attribute metadata object:

{
   metadataId: "sample-id"
}

Page

The page call contains information related to the page, such as the URL of the web page visited by the user.

{% hint style="info" %} For more information on the page method, please refer to our RudderStack API Specification guide. {% endhint %}

A sample page payload is as shown in the snippet below:

rudderanalytics.page({
  path: "path",
  url: "url",
  title: "title",
  search: "search",
  referrer: "referrer"
});

Identify

The identify call captures the relevant details about the visiting user.

{% hint style="info" %} For more information on the identify method, please refer to our RudderStack API Specification guide. {% endhint %}

A sample identify payload is as shown in the snippet below:

rudderanalytics.identify("abc123", {
  name: "FirstName LastName",
  email: "[email protected]"
});

Track

The track call captures the information related to the actions performed by the user, along with their properties, or traits.

{% hint style="info" %} For more information on the track method, please refer to our RudderStack API Specification guide. {% endhint %}

A sample track payload is as shown in the snippet below:

rudderanalytics.track("Track me", {
        category: "category",
        label: "label",
        value: "value"
 });

FAQs

How does event mapping work with the topic ID?

  • If there is no topic ID set for an event, it will not be sent.
  • If an event is set with a topic id, the payload will be sent to Pub/Sub to that particular topic id.

{% hint style="info" %} If you have set all event type, event and * for mapping the priority will be given to event ,
then type , followed by *. {% endhint %}

For example, let the type of event be track, the event name be product added. The mapping is done as:

Now all the events should go to the topic mapped with product added.

How do I provide multiple Attribute mapping for a particular event?

In order to send multiple attribute keys for a particular event, enter the required mappings in the RudderStack dashboard as seen below:

Contact Us

If you come across any issues while configuring or using Google Pub/Sub with RudderStack, please feel free to contact us. You can also start a conversation on our Slack channel; we will be happy to talk to you!