Skip to main content
Ask your AI

Google Pub/Sub

Server Source code Package

Server-side event publishing to Google Cloud Pub/Sub topics. Each event is serialized as JSON, optionally keyed for per-message ordering, and published via the official @google-cloud/pubsub SDK. Supports Application Default Credentials, service account JSON, or pre-configured client injection. Per-rule topic, ordering-key, and attribute overrides. Idempotent topic provisioning with EU storage policy by default.

The destination ships inside @walkeros/server-destination-gcp alongside BigQuery; install the package once and import destinationPubSub for Pub/Sub.

Where this fits

Pub/Sub is a server destination in the walkerOS flow:

Publishes events to a Pub/Sub topic for fan-out, asynchronous processing, cross-region delivery, and integration with downstream consumers (Dataflow, Cloud Functions, Cloud Run, custom subscribers).

Installation​

npm install @walkeros/server-destination-gcp
import { startFlow } from '@walkeros/collector';
import { destinationPubSub } from '@walkeros/server-destination-gcp';

await startFlow({
  destinations: {
    pubsub: {
      code: destinationPubSub,
      config: {
        settings: {
          projectId: 'YOUR_PROJECT_ID',
          topic: 'events',
        },
      },
    },
  },
});

Configuration​

This destination uses the standard destination config wrapper (consent, data, env, id, ...). For the shared fields see destination configuration. Package-specific fields live under config.settings and are listed below.

Settings​

PropertyTypeDescriptionMore
clientanyGoogle Cloud Pub/Sub client instance
projectId*stringGoogle Cloud Project ID
topic*stringPub/Sub topic short name (like events). The full resource name projects/<projectId>/topics/<topic> is built by the SDK.
credentialsanyService account credentials as a JSON string or an object with client_email and private_key. Default: Application Default Credentials (ADC). (deprecated: use config.credentials)
apiEndpointstringOverride Pub/Sub API endpoint. Useful for the local emulator (like localhost:8085).
orderingKeyanyMapping value resolved per-event. Truthy enables per-key ordering for the publish.
attributesanyDefault per-event attribute map merged into every published message. Mapping.Map shape.
* Required fields

Mapping​

Per-event rules under config.mapping. For the standard rule fields (consent, condition, data, batch, name, policy) see mapping.

PropertyTypeDescriptionMore
topicstringPer-rule topic override. Falls back to settings.topic if absent.
orderingKeyanyPer-rule ordering-key Mapping.Value. Overrides settings.orderingKey when set.
attributesanyPer-rule attribute Mapping.Map merged on top of settings.attributes.

Examples

Default publish

An event is published to the configured Pub/Sub topic with the full JSON event as the message body and no ordering key.

Event
{
  "name": "order complete",
  "data": {
    "id": "ORD-500",
    "total": 199.99,
    "currency": "EUR"
  },
  "context": {
    "shopping": [
      "complete",
      0
    ]
  },
  "globals": {
    "pagegroup": "shop"
  },
  "custom": {
    "completely": "random"
  },
  "user": {
    "id": "usr-789"
  },
  "nested": [
    {
      "entity": "product",
      "data": {
        "id": "ers",
        "name": "Everyday Ruck Snack",
        "color": "black",
        "size": "l",
        "price": 420
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "product",
      "data": {
        "id": "cc",
        "name": "Cool Cap",
        "size": "one size",
        "price": 42
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "gift",
      "data": {
        "name": "Surprise"
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    }
  ],
  "consent": {
    "functional": true
  },
  "id": "52597d5269679369",
  "trigger": "load",
  "entity": "order",
  "action": "complete",
  "timestamp": 1700001100,
  "timing": 3.14,
  "source": {
    "count": 1,
    "trace": "1a2b3c4d5e6f70819a2b3c4d5e6f7081",
    "type": "express",
    "platform": "server"
  }
}
Out
topic("events", {
  "messageOrdering": false
});

publishMessage("events", {
  "data": {
    "0": 123,
    "1": 34,
    "2": 110,
    "3": 97,
    "4": 109,
    "5": 101,
    "6": 34,
    "7": 58,
    "8": 34,
    "9": 111,
    "10": 114,
    "11": 100,
    "12": 101,
    "13": 114,
    "14": 32,
    "15": 99,
    "16": 111,
    "17": 109,
    "18": 112,
    "19": 108,
    "20": 101,
    "21": 116,
    "22": 101,
    "23": 34,
    "24": 44,
    "25": 34,
    "26": 100,
    "27": 97,
    "28": 116,
    "29": 97,
    "30": 34,
    "31": 58,
    "32": 123,
    "33": 34,
    "34": 105,
    "35": 100,
    "36": 34,
    "37": 58,
    "38": 34,
    "39": 79,
    "40": 82,
    "41": 68,
    "42": 45,
    "43": 53,
    "44": 48,
    "45": 48,
    "46": 34,
    "47": 44,
    "48": 34,
    "49": 116,
    "50": 111,
    "51": 116,
    "52": 97,
    "53": 108,
    "54": 34,
    "55": 58,
    "56": 49,
    "57": 57,
    "58": 57,
    "59": 46,
    "60": 57,
    "61": 57,
    "62": 44,
    "63": 34,
    "64": 99,
    "65": 117,
    "66": 114,
    "67": 114,
    "68": 101,
    "69": 110,
    "70": 99,
    "71": 121,
    "72": 34,
    "73": 58,
    "74": 34,
    "75": 69,
    "76": 85,
    "77": 82,
    "78": 34,
    "79": 125,
    "80": 44,
    "81": 34,
    "82": 99,
    "83": 111,
    "84": 110,
    "85": 116,
    "86": 101,
    "87": 120,
    "88": 116,
    "89": 34,
    "90": 58,
    "91": 123,
    "92": 34,
    "93": 115,
    "94": 104,
    "95": 111,
    "96": 112,
    "97": 112,
    "98": 105,
    "99": 110,
    "100": 103,
    "101": 34,
    "102": 58,
    "103": 91,
    "104": 34,
    "105": 99,
    "106": 111,
    "107": 109,
    "108": 112,
    "109": 108,
    "110": 101,
    "111": 116,
    "112": 101,
    "113": 34,
    "114": 44,
    "115": 48,
    "116": 93,
    "117": 125,
    "118": 44,
    "119": 34,
    "120": 103,
    "121": 108,
    "122": 111,
    "123": 98,
    "124": 97,
    "125": 108,
    "126": 115,
    "127": 34,
    "128": 58,
    "129": 123,
    "130": 34,
    "131": 112,
    "132": 97,
    "133": 103,
    "134": 101,
    "135": 103,
    "136": 114,
    "137": 111,
    "138": 117,
    "139": 112,
    "140": 34,
    "141": 58,
    "142": 34,
    "143": 115,
    "144": 104,
    "145": 111,
    "146": 112,
    "147": 34,
    "148": 125,
    "149": 44,
    "150": 34,
    "151": 99,
    "152": 117,
    "153": 115,
    "154": 116,
    "155": 111,
    "156": 109,
    "157": 34,
    "158": 58,
    "159": 123,
    "160": 34,
    "161": 99,
    "162": 111,
    "163": 109,
    "164": 112,
    "165": 108,
    "166": 101,
    "167": 116,
    "168": 101,
    "169": 108,
    "170": 121,
    "171": 34,
    "172": 58,
    "173": 34,
    "174": 114,
    "175": 97,
    "176": 110,
    "177": 100,
    "178": 111,
    "179": 109,
    "180": 34,
    "181": 125,
    "182": 44,
    "183": 34,
    "184": 117,
    "185": 115,
    "186": 101,
    "187": 114,
    "188": 34,
    "189": 58,
    "190": 123,
    "191": 34,
    "192": 105,
    "193": 100,
    "194": 34,
    "195": 58,
    "196": 34,
    "197": 117,
    "198": 115,
    "199": 114,
    "200": 45,
    "201": 55,
    "202": 56,
    "203": 57,
    "204": 34,
    "205": 125,
    "206": 44,
    "207": 34,
    "208": 110,
    "209": 101,
    "210": 115,
    "211": 116,
    "212": 101,
    "213": 100,
    "214": 34,
    "215": 58,
    "216": 91,
    "217": 123,
    "218": 34,
    "219": 101,
    "220": 110,
    "221": 116,
    "222": 105,
    "223": 116,
    "224": 121,
    "225": 34,
    "226": 58,
    "227": 34,
    "228": 112,
    "229": 114,
    "230": 111,
    "231": 100,
    "232": 117,
    "233": 99,
    "234": 116,
    "235": 34,
    "236": 44,
    "237": 34,
    "238": 100,
    "239": 97,
    "240": 116,
    "241": 97,
    "242": 34,
    "243": 58,
    "244": 123,
    "245": 34,
    "246": 105,
    "247": 100,
    "248": 34,
    "249": 58,
    "250": 34,
    "251": 101,
    "252": 114,
    "253": 115,
    "254": 34,
    "255": 44,
    "256": 34,
    "257": 110,
    "258": 97,
    "259": 109,
    "260": 101,
    "261": 34,
    "262": 58,
    "263": 34,
    "264": 69,
    "265": 118,
    "266": 101,
    "267": 114,
    "268": 121,
    "269": 100,
    "270": 97,
    "271": 121,
    "272": 32,
    "273": 82,
    "274": 117,
    "275": 99,
    "276": 107,
    "277": 32,
    "278": 83,
    "279": 110,
    "280": 97,
    "281": 99,
    "282": 107,
    "283": 34,
    "284": 44,
    "285": 34,
    "286": 99,
    "287": 111,
    "288": 108,
    "289": 111,
    "290": 114,
    "291": 34,
    "292": 58,
    "293": 34,
    "294": 98,
    "295": 108,
    "296": 97,
    "297": 99,
    "298": 107,
    "299": 34,
    "300": 44,
    "301": 34,
    "302": 115,
    "303": 105,
    "304": 122,
    "305": 101,
    "306": 34,
    "307": 58,
    "308": 34,
    "309": 108,
    "310": 34,
    "311": 44,
    "312": 34,
    "313": 112,
    "314": 114,
    "315": 105,
    "316": 99,
    "317": 101,
    "318": 34,
    "319": 58,
    "320": 52,
    "321": 50,
    "322": 48,
    "323": 125,
    "324": 44,
    "325": 34,
    "326": 99,
    "327": 111,
    "328": 110,
    "329": 116,
    "330": 101,
    "331": 120,
    "332": 116,
    "333": 34,
    "334": 58,
    "335": 123,
    "336": 34,
    "337": 115,
    "338": 104,
    "339": 111,
    "340": 112,
    "341": 112,
    "342": 105,
    "343": 110,
    "344": 103,
    "345": 34,
    "346": 58,
    "347": 91,
    "348": 34,
    "349": 99,
    "350": 111,
    "351": 109,
    "352": 112,
    "353": 108,
    "354": 101,
    "355": 116,
    "356": 101,
    "357": 34,
    "358": 44,
    "359": 48,
    "360": 93,
    "361": 125,
    "362": 44,
    "363": 34,
    "364": 110,
    "365": 101,
    "366": 115,
    "367": 116,
    "368": 101,
    "369": 100,
    "370": 34,
    "371": 58,
    "372": 91,
    "373": 93,
    "374": 125,
    "375": 44,
    "376": 123,
    "377": 34,
    "378": 101,
    "379": 110,
    "380": 116,
    "381": 105,
    "382": 116,
    "383": 121,
    "384": 34,
    "385": 58,
    "386": 34,
    "387": 112,
    "388": 114,
    "389": 111,
    "390": 100,
    "391": 117,
    "392": 99,
    "393": 116,
    "394": 34,
    "395": 44,
    "396": 34,
    "397": 100,
    "398": 97,
    "399": 116,
    "400": 97,
    "401": 34,
    "402": 58,
    "403": 123,
    "404": 34,
    "405": 105,
    "406": 100,
    "407": 34,
    "408": 58,
    "409": 34,
    "410": 99,
    "411": 99,
    "412": 34,
    "413": 44,
    "414": 34,
    "415": 110,
    "416": 97,
    "417": 109,
    "418": 101,
    "419": 34,
    "420": 58,
    "421": 34,
    "422": 67,
    "423": 111,
    "424": 111,
    "425": 108,
    "426": 32,
    "427": 67,
    "428": 97,
    "429": 112,
    "430": 34,
    "431": 44,
    "432": 34,
    "433": 115,
    "434": 105,
    "435": 122,
    "436": 101,
    "437": 34,
    "438": 58,
    "439": 34,
    "440": 111,
    "441": 110,
    "442": 101,
    "443": 32,
    "444": 115,
    "445": 105,
    "446": 122,
    "447": 101,
    "448": 34,
    "449": 44,
    "450": 34,
    "451": 112,
    "452": 114,
    "453": 105,
    "454": 99,
    "455": 101,
    "456": 34,
    "457": 58,
    "458": 52,
    "459": 50,
    "460": 125,
    "461": 44,
    "462": 34,
    "463": 99,
    "464": 111,
    "465": 110,
    "466": 116,
    "467": 101,
    "468": 120,
    "469": 116,
    "470": 34,
    "471": 58,
    "472": 123,
    "473": 34,
    "474": 115,
    "475": 104,
    "476": 111,
    "477": 112,
    "478": 112,
    "479": 105,
    "480": 110,
    "481": 103,
    "482": 34,
    "483": 58,
    "484": 91,
    "485": 34,
    "486": 99,
    "487": 111,
    "488": 109,
    "489": 112,
    "490": 108,
    "491": 101,
    "492": 116,
    "493": 101,
    "494": 34,
    "495": 44,
    "496": 48,
    "497": 93,
    "498": 125,
    "499": 44,
    "500": 34,
    "501": 110,
    "502": 101,
    "503": 115,
    "504": 116,
    "505": 101,
    "506": 100,
    "507": 34,
    "508": 58,
    "509": 91,
    "510": 93,
    "511": 125,
    "512": 44,
    "513": 123,
    "514": 34,
    "515": 101,
    "516": 110,
    "517": 116,
    "518": 105,
    "519": 116,
    "520": 121,
    "521": 34,
    "522": 58,
    "523": 34,
    "524": 103,
    "525": 105,
    "526": 102,
    "527": 116,
    "528": 34,
    "529": 44,
    "530": 34,
    "531": 100,
    "532": 97,
    "533": 116,
    "534": 97,
    "535": 34,
    "536": 58,
    "537": 123,
    "538": 34,
    "539": 110,
    "540": 97,
    "541": 109,
    "542": 101,
    "543": 34,
    "544": 58,
    "545": 34,
    "546": 83,
    "547": 117,
    "548": 114,
    "549": 112,
    "550": 114,
    "551": 105,
    "552": 115,
    "553": 101,
    "554": 34,
    "555": 125,
    "556": 44,
    "557": 34,
    "558": 99,
    "559": 111,
    "560": 110,
    "561": 116,
    "562": 101,
    "563": 120,
    "564": 116,
    "565": 34,
    "566": 58,
    "567": 123,
    "568": 34,
    "569": 115,
    "570": 104,
    "571": 111,
    "572": 112,
    "573": 112,
    "574": 105,
    "575": 110,
    "576": 103,
    "577": 34,
    "578": 58,
    "579": 91,
    "580": 34,
    "581": 99,
    "582": 111,
    "583": 109,
    "584": 112,
    "585": 108,
    "586": 101,
    "587": 116,
    "588": 101,
    "589": 34,
    "590": 44,
    "591": 48,
    "592": 93,
    "593": 125,
    "594": 44,
    "595": 34,
    "596": 110,
    "597": 101,
    "598": 115,
    "599": 116,
    "600": 101,
    "601": 100,
    "602": 34,
    "603": 58,
    "604": 91,
    "605": 93,
    "606": 125,
    "607": 93,
    "608": 44,
    "609": 34,
    "610": 99,
    "611": 111,
    "612": 110,
    "613": 115,
    "614": 101,
    "615": 110,
    "616": 116,
    "617": 34,
    "618": 58,
    "619": 123,
    "620": 34,
    "621": 102,
    "622": 117,
    "623": 110,
    "624": 99,
    "625": 116,
    "626": 105,
    "627": 111,
    "628": 110,
    "629": 97,
    "630": 108,
    "631": 34,
    "632": 58,
    "633": 116,
    "634": 114,
    "635": 117,
    "636": 101,
    "637": 125,
    "638": 44,
    "639": 34,
    "640": 105,
    "641": 100,
    "642": 34,
    "643": 58,
    "644": 34,
    "645": 53,
    "646": 50,
    "647": 53,
    "648": 57,
    "649": 55,
    "650": 100,
    "651": 53,
    "652": 50,
    "653": 54,
    "654": 57,
    "655": 54,
    "656": 55,
    "657": 57,
    "658": 51,
    "659": 54,
    "660": 57,
    "661": 34,
    "662": 44,
    "663": 34,
    "664": 116,
    "665": 114,
    "666": 105,
    "667": 103,
    "668": 103,
    "669": 101,
    "670": 114,
    "671": 34,
    "672": 58,
    "673": 34,
    "674": 108,
    "675": 111,
    "676": 97,
    "677": 100,
    "678": 34,
    "679": 44,
    "680": 34,
    "681": 101,
    "682": 110,
    "683": 116,
    "684": 105,
    "685": 116,
    "686": 121,
    "687": 34,
    "688": 58,
    "689": 34,
    "690": 111,
    "691": 114,
    "692": 100,
    "693": 101,
    "694": 114,
    "695": 34,
    "696": 44,
    "697": 34,
    "698": 97,
    "699": 99,
    "700": 116,
    "701": 105,
    "702": 111,
    "703": 110,
    "704": 34,
    "705": 58,
    "706": 34,
    "707": 99,
    "708": 111,
    "709": 109,
    "710": 112,
    "711": 108,
    "712": 101,
    "713": 116,
    "714": 101,
    "715": 34,
    "716": 44,
    "717": 34,
    "718": 116,
    "719": 105,
    "720": 109,
    "721": 101,
    "722": 115,
    "723": 116,
    "724": 97,
    "725": 109,
    "726": 112,
    "727": 34,
    "728": 58,
    "729": 49,
    "730": 55,
    "731": 48,
    "732": 48,
    "733": 48,
    "734": 48,
    "735": 49,
    "736": 49,
    "737": 48,
    "738": 48,
    "739": 44,
    "740": 34,
    "741": 116,
    "742": 105,
    "743": 109,
    "744": 105,
    "745": 110,
    "746": 103,
    "747": 34,
    "748": 58,
    "749": 51,
    "750": 46,
    "751": 49,
    "752": 52,
    "753": 44,
    "754": 34,
    "755": 115,
    "756": 111,
    "757": 117,
    "758": 114,
    "759": 99,
    "760": 101,
    "761": 34,
    "762": 58,
    "763": 123,
    "764": 34,
    "765": 99,
    "766": 111,
    "767": 117,
    "768": 110,
    "769": 116,
    "770": 34,
    "771": 58,
    "772": 49,
    "773": 44,
    "774": 34,
    "775": 116,
    "776": 114,
    "777": 97,
    "778": 99,
    "779": 101,
    "780": 34,
    "781": 58,
    "782": 34,
    "783": 49,
    "784": 97,
    "785": 50,
    "786": 98,
    "787": 51,
    "788": 99,
    "789": 52,
    "790": 100,
    "791": 53,
    "792": 101,
    "793": 54,
    "794": 102,
    "795": 55,
    "796": 48,
    "797": 56,
    "798": 49,
    "799": 57,
    "800": 97,
    "801": 50,
    "802": 98,
    "803": 51,
    "804": 99,
    "805": 52,
    "806": 100,
    "807": 53,
    "808": 101,
    "809": 54,
    "810": 102,
    "811": 55,
    "812": 48,
    "813": 56,
    "814": 49,
    "815": 34,
    "816": 44,
    "817": 34,
    "818": 116,
    "819": 121,
    "820": 112,
    "821": 101,
    "822": 34,
    "823": 58,
    "824": 34,
    "825": 101,
    "826": 120,
    "827": 112,
    "828": 114,
    "829": 101,
    "830": 115,
    "831": 115,
    "832": 34,
    "833": 44,
    "834": 34,
    "835": 112,
    "836": 108,
    "837": 97,
    "838": 116,
    "839": 102,
    "840": 111,
    "841": 114,
    "842": 109,
    "843": 34,
    "844": 58,
    "845": 34,
    "846": 115,
    "847": 101,
    "848": 114,
    "849": 118,
    "850": 101,
    "851": 114,
    "852": 34,
    "853": 44,
    "854": 34,
    "855": 114,
    "856": 101,
    "857": 108,
    "858": 101,
    "859": 97,
    "860": 115,
    "861": 101,
    "862": 34,
    "863": 58,
    "864": 123,
    "865": 34,
    "866": 115,
    "867": 101,
    "868": 114,
    "869": 118,
    "870": 101,
    "871": 114,
    "872": 34,
    "873": 58,
    "874": 34,
    "875": 52,
    "876": 46,
    "877": 56,
    "878": 46,
    "879": 48,
    "880": 34,
    "881": 125,
    "882": 125,
    "883": 125
  }
})

Mapped attributes

A mapping resolves a per-event attribute map, here exposing entity and action as Pub/Sub attributes for routing in subscribers.

Event
{
  "name": "order complete",
  "data": {
    "id": "ORD-500",
    "total": 199.99,
    "currency": "EUR"
  },
  "context": {
    "shopping": [
      "complete",
      0
    ]
  },
  "globals": {
    "pagegroup": "shop"
  },
  "custom": {
    "completely": "random"
  },
  "user": {
    "id": "usr-789"
  },
  "nested": [
    {
      "entity": "product",
      "data": {
        "id": "ers",
        "name": "Everyday Ruck Snack",
        "color": "black",
        "size": "l",
        "price": 420
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "product",
      "data": {
        "id": "cc",
        "name": "Cool Cap",
        "size": "one size",
        "price": 42
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "gift",
      "data": {
        "name": "Surprise"
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    }
  ],
  "consent": {
    "functional": true
  },
  "id": "52597d5269679369",
  "trigger": "load",
  "entity": "order",
  "action": "complete",
  "timestamp": 1700001100,
  "timing": 3.14,
  "source": {
    "count": 1,
    "trace": "1a2b3c4d5e6f70819a2b3c4d5e6f7081",
    "type": "express",
    "platform": "server"
  }
}
Mapping
{
  "settings": {
    "attributes": {
      "entity": "entity",
      "action": "action"
    }
  }
}
Out
topic("events", {
  "messageOrdering": false
});

publishMessage("events", {
  "data": {
    "0": 123,
    "1": 34,
    "2": 110,
    "3": 97,
    "4": 109,
    "5": 101,
    "6": 34,
    "7": 58,
    "8": 34,
    "9": 111,
    "10": 114,
    "11": 100,
    "12": 101,
    "13": 114,
    "14": 32,
    "15": 99,
    "16": 111,
    "17": 109,
    "18": 112,
    "19": 108,
    "20": 101,
    "21": 116,
    "22": 101,
    "23": 34,
    "24": 44,
    "25": 34,
    "26": 100,
    "27": 97,
    "28": 116,
    "29": 97,
    "30": 34,
    "31": 58,
    "32": 123,
    "33": 34,
    "34": 105,
    "35": 100,
    "36": 34,
    "37": 58,
    "38": 34,
    "39": 79,
    "40": 82,
    "41": 68,
    "42": 45,
    "43": 53,
    "44": 48,
    "45": 48,
    "46": 34,
    "47": 44,
    "48": 34,
    "49": 116,
    "50": 111,
    "51": 116,
    "52": 97,
    "53": 108,
    "54": 34,
    "55": 58,
    "56": 49,
    "57": 57,
    "58": 57,
    "59": 46,
    "60": 57,
    "61": 57,
    "62": 44,
    "63": 34,
    "64": 99,
    "65": 117,
    "66": 114,
    "67": 114,
    "68": 101,
    "69": 110,
    "70": 99,
    "71": 121,
    "72": 34,
    "73": 58,
    "74": 34,
    "75": 69,
    "76": 85,
    "77": 82,
    "78": 34,
    "79": 125,
    "80": 44,
    "81": 34,
    "82": 99,
    "83": 111,
    "84": 110,
    "85": 116,
    "86": 101,
    "87": 120,
    "88": 116,
    "89": 34,
    "90": 58,
    "91": 123,
    "92": 34,
    "93": 115,
    "94": 104,
    "95": 111,
    "96": 112,
    "97": 112,
    "98": 105,
    "99": 110,
    "100": 103,
    "101": 34,
    "102": 58,
    "103": 91,
    "104": 34,
    "105": 99,
    "106": 111,
    "107": 109,
    "108": 112,
    "109": 108,
    "110": 101,
    "111": 116,
    "112": 101,
    "113": 34,
    "114": 44,
    "115": 48,
    "116": 93,
    "117": 125,
    "118": 44,
    "119": 34,
    "120": 103,
    "121": 108,
    "122": 111,
    "123": 98,
    "124": 97,
    "125": 108,
    "126": 115,
    "127": 34,
    "128": 58,
    "129": 123,
    "130": 34,
    "131": 112,
    "132": 97,
    "133": 103,
    "134": 101,
    "135": 103,
    "136": 114,
    "137": 111,
    "138": 117,
    "139": 112,
    "140": 34,
    "141": 58,
    "142": 34,
    "143": 115,
    "144": 104,
    "145": 111,
    "146": 112,
    "147": 34,
    "148": 125,
    "149": 44,
    "150": 34,
    "151": 99,
    "152": 117,
    "153": 115,
    "154": 116,
    "155": 111,
    "156": 109,
    "157": 34,
    "158": 58,
    "159": 123,
    "160": 34,
    "161": 99,
    "162": 111,
    "163": 109,
    "164": 112,
    "165": 108,
    "166": 101,
    "167": 116,
    "168": 101,
    "169": 108,
    "170": 121,
    "171": 34,
    "172": 58,
    "173": 34,
    "174": 114,
    "175": 97,
    "176": 110,
    "177": 100,
    "178": 111,
    "179": 109,
    "180": 34,
    "181": 125,
    "182": 44,
    "183": 34,
    "184": 117,
    "185": 115,
    "186": 101,
    "187": 114,
    "188": 34,
    "189": 58,
    "190": 123,
    "191": 34,
    "192": 105,
    "193": 100,
    "194": 34,
    "195": 58,
    "196": 34,
    "197": 117,
    "198": 115,
    "199": 114,
    "200": 45,
    "201": 55,
    "202": 56,
    "203": 57,
    "204": 34,
    "205": 125,
    "206": 44,
    "207": 34,
    "208": 110,
    "209": 101,
    "210": 115,
    "211": 116,
    "212": 101,
    "213": 100,
    "214": 34,
    "215": 58,
    "216": 91,
    "217": 123,
    "218": 34,
    "219": 101,
    "220": 110,
    "221": 116,
    "222": 105,
    "223": 116,
    "224": 121,
    "225": 34,
    "226": 58,
    "227": 34,
    "228": 112,
    "229": 114,
    "230": 111,
    "231": 100,
    "232": 117,
    "233": 99,
    "234": 116,
    "235": 34,
    "236": 44,
    "237": 34,
    "238": 100,
    "239": 97,
    "240": 116,
    "241": 97,
    "242": 34,
    "243": 58,
    "244": 123,
    "245": 34,
    "246": 105,
    "247": 100,
    "248": 34,
    "249": 58,
    "250": 34,
    "251": 101,
    "252": 114,
    "253": 115,
    "254": 34,
    "255": 44,
    "256": 34,
    "257": 110,
    "258": 97,
    "259": 109,
    "260": 101,
    "261": 34,
    "262": 58,
    "263": 34,
    "264": 69,
    "265": 118,
    "266": 101,
    "267": 114,
    "268": 121,
    "269": 100,
    "270": 97,
    "271": 121,
    "272": 32,
    "273": 82,
    "274": 117,
    "275": 99,
    "276": 107,
    "277": 32,
    "278": 83,
    "279": 110,
    "280": 97,
    "281": 99,
    "282": 107,
    "283": 34,
    "284": 44,
    "285": 34,
    "286": 99,
    "287": 111,
    "288": 108,
    "289": 111,
    "290": 114,
    "291": 34,
    "292": 58,
    "293": 34,
    "294": 98,
    "295": 108,
    "296": 97,
    "297": 99,
    "298": 107,
    "299": 34,
    "300": 44,
    "301": 34,
    "302": 115,
    "303": 105,
    "304": 122,
    "305": 101,
    "306": 34,
    "307": 58,
    "308": 34,
    "309": 108,
    "310": 34,
    "311": 44,
    "312": 34,
    "313": 112,
    "314": 114,
    "315": 105,
    "316": 99,
    "317": 101,
    "318": 34,
    "319": 58,
    "320": 52,
    "321": 50,
    "322": 48,
    "323": 125,
    "324": 44,
    "325": 34,
    "326": 99,
    "327": 111,
    "328": 110,
    "329": 116,
    "330": 101,
    "331": 120,
    "332": 116,
    "333": 34,
    "334": 58,
    "335": 123,
    "336": 34,
    "337": 115,
    "338": 104,
    "339": 111,
    "340": 112,
    "341": 112,
    "342": 105,
    "343": 110,
    "344": 103,
    "345": 34,
    "346": 58,
    "347": 91,
    "348": 34,
    "349": 99,
    "350": 111,
    "351": 109,
    "352": 112,
    "353": 108,
    "354": 101,
    "355": 116,
    "356": 101,
    "357": 34,
    "358": 44,
    "359": 48,
    "360": 93,
    "361": 125,
    "362": 44,
    "363": 34,
    "364": 110,
    "365": 101,
    "366": 115,
    "367": 116,
    "368": 101,
    "369": 100,
    "370": 34,
    "371": 58,
    "372": 91,
    "373": 93,
    "374": 125,
    "375": 44,
    "376": 123,
    "377": 34,
    "378": 101,
    "379": 110,
    "380": 116,
    "381": 105,
    "382": 116,
    "383": 121,
    "384": 34,
    "385": 58,
    "386": 34,
    "387": 112,
    "388": 114,
    "389": 111,
    "390": 100,
    "391": 117,
    "392": 99,
    "393": 116,
    "394": 34,
    "395": 44,
    "396": 34,
    "397": 100,
    "398": 97,
    "399": 116,
    "400": 97,
    "401": 34,
    "402": 58,
    "403": 123,
    "404": 34,
    "405": 105,
    "406": 100,
    "407": 34,
    "408": 58,
    "409": 34,
    "410": 99,
    "411": 99,
    "412": 34,
    "413": 44,
    "414": 34,
    "415": 110,
    "416": 97,
    "417": 109,
    "418": 101,
    "419": 34,
    "420": 58,
    "421": 34,
    "422": 67,
    "423": 111,
    "424": 111,
    "425": 108,
    "426": 32,
    "427": 67,
    "428": 97,
    "429": 112,
    "430": 34,
    "431": 44,
    "432": 34,
    "433": 115,
    "434": 105,
    "435": 122,
    "436": 101,
    "437": 34,
    "438": 58,
    "439": 34,
    "440": 111,
    "441": 110,
    "442": 101,
    "443": 32,
    "444": 115,
    "445": 105,
    "446": 122,
    "447": 101,
    "448": 34,
    "449": 44,
    "450": 34,
    "451": 112,
    "452": 114,
    "453": 105,
    "454": 99,
    "455": 101,
    "456": 34,
    "457": 58,
    "458": 52,
    "459": 50,
    "460": 125,
    "461": 44,
    "462": 34,
    "463": 99,
    "464": 111,
    "465": 110,
    "466": 116,
    "467": 101,
    "468": 120,
    "469": 116,
    "470": 34,
    "471": 58,
    "472": 123,
    "473": 34,
    "474": 115,
    "475": 104,
    "476": 111,
    "477": 112,
    "478": 112,
    "479": 105,
    "480": 110,
    "481": 103,
    "482": 34,
    "483": 58,
    "484": 91,
    "485": 34,
    "486": 99,
    "487": 111,
    "488": 109,
    "489": 112,
    "490": 108,
    "491": 101,
    "492": 116,
    "493": 101,
    "494": 34,
    "495": 44,
    "496": 48,
    "497": 93,
    "498": 125,
    "499": 44,
    "500": 34,
    "501": 110,
    "502": 101,
    "503": 115,
    "504": 116,
    "505": 101,
    "506": 100,
    "507": 34,
    "508": 58,
    "509": 91,
    "510": 93,
    "511": 125,
    "512": 44,
    "513": 123,
    "514": 34,
    "515": 101,
    "516": 110,
    "517": 116,
    "518": 105,
    "519": 116,
    "520": 121,
    "521": 34,
    "522": 58,
    "523": 34,
    "524": 103,
    "525": 105,
    "526": 102,
    "527": 116,
    "528": 34,
    "529": 44,
    "530": 34,
    "531": 100,
    "532": 97,
    "533": 116,
    "534": 97,
    "535": 34,
    "536": 58,
    "537": 123,
    "538": 34,
    "539": 110,
    "540": 97,
    "541": 109,
    "542": 101,
    "543": 34,
    "544": 58,
    "545": 34,
    "546": 83,
    "547": 117,
    "548": 114,
    "549": 112,
    "550": 114,
    "551": 105,
    "552": 115,
    "553": 101,
    "554": 34,
    "555": 125,
    "556": 44,
    "557": 34,
    "558": 99,
    "559": 111,
    "560": 110,
    "561": 116,
    "562": 101,
    "563": 120,
    "564": 116,
    "565": 34,
    "566": 58,
    "567": 123,
    "568": 34,
    "569": 115,
    "570": 104,
    "571": 111,
    "572": 112,
    "573": 112,
    "574": 105,
    "575": 110,
    "576": 103,
    "577": 34,
    "578": 58,
    "579": 91,
    "580": 34,
    "581": 99,
    "582": 111,
    "583": 109,
    "584": 112,
    "585": 108,
    "586": 101,
    "587": 116,
    "588": 101,
    "589": 34,
    "590": 44,
    "591": 48,
    "592": 93,
    "593": 125,
    "594": 44,
    "595": 34,
    "596": 110,
    "597": 101,
    "598": 115,
    "599": 116,
    "600": 101,
    "601": 100,
    "602": 34,
    "603": 58,
    "604": 91,
    "605": 93,
    "606": 125,
    "607": 93,
    "608": 44,
    "609": 34,
    "610": 99,
    "611": 111,
    "612": 110,
    "613": 115,
    "614": 101,
    "615": 110,
    "616": 116,
    "617": 34,
    "618": 58,
    "619": 123,
    "620": 34,
    "621": 102,
    "622": 117,
    "623": 110,
    "624": 99,
    "625": 116,
    "626": 105,
    "627": 111,
    "628": 110,
    "629": 97,
    "630": 108,
    "631": 34,
    "632": 58,
    "633": 116,
    "634": 114,
    "635": 117,
    "636": 101,
    "637": 125,
    "638": 44,
    "639": 34,
    "640": 105,
    "641": 100,
    "642": 34,
    "643": 58,
    "644": 34,
    "645": 53,
    "646": 50,
    "647": 53,
    "648": 57,
    "649": 55,
    "650": 100,
    "651": 53,
    "652": 50,
    "653": 54,
    "654": 57,
    "655": 54,
    "656": 55,
    "657": 57,
    "658": 51,
    "659": 54,
    "660": 57,
    "661": 34,
    "662": 44,
    "663": 34,
    "664": 116,
    "665": 114,
    "666": 105,
    "667": 103,
    "668": 103,
    "669": 101,
    "670": 114,
    "671": 34,
    "672": 58,
    "673": 34,
    "674": 108,
    "675": 111,
    "676": 97,
    "677": 100,
    "678": 34,
    "679": 44,
    "680": 34,
    "681": 101,
    "682": 110,
    "683": 116,
    "684": 105,
    "685": 116,
    "686": 121,
    "687": 34,
    "688": 58,
    "689": 34,
    "690": 111,
    "691": 114,
    "692": 100,
    "693": 101,
    "694": 114,
    "695": 34,
    "696": 44,
    "697": 34,
    "698": 97,
    "699": 99,
    "700": 116,
    "701": 105,
    "702": 111,
    "703": 110,
    "704": 34,
    "705": 58,
    "706": 34,
    "707": 99,
    "708": 111,
    "709": 109,
    "710": 112,
    "711": 108,
    "712": 101,
    "713": 116,
    "714": 101,
    "715": 34,
    "716": 44,
    "717": 34,
    "718": 116,
    "719": 105,
    "720": 109,
    "721": 101,
    "722": 115,
    "723": 116,
    "724": 97,
    "725": 109,
    "726": 112,
    "727": 34,
    "728": 58,
    "729": 49,
    "730": 55,
    "731": 48,
    "732": 48,
    "733": 48,
    "734": 48,
    "735": 49,
    "736": 49,
    "737": 48,
    "738": 48,
    "739": 44,
    "740": 34,
    "741": 116,
    "742": 105,
    "743": 109,
    "744": 105,
    "745": 110,
    "746": 103,
    "747": 34,
    "748": 58,
    "749": 51,
    "750": 46,
    "751": 49,
    "752": 52,
    "753": 44,
    "754": 34,
    "755": 115,
    "756": 111,
    "757": 117,
    "758": 114,
    "759": 99,
    "760": 101,
    "761": 34,
    "762": 58,
    "763": 123,
    "764": 34,
    "765": 99,
    "766": 111,
    "767": 117,
    "768": 110,
    "769": 116,
    "770": 34,
    "771": 58,
    "772": 49,
    "773": 44,
    "774": 34,
    "775": 116,
    "776": 114,
    "777": 97,
    "778": 99,
    "779": 101,
    "780": 34,
    "781": 58,
    "782": 34,
    "783": 49,
    "784": 97,
    "785": 50,
    "786": 98,
    "787": 51,
    "788": 99,
    "789": 52,
    "790": 100,
    "791": 53,
    "792": 101,
    "793": 54,
    "794": 102,
    "795": 55,
    "796": 48,
    "797": 56,
    "798": 49,
    "799": 57,
    "800": 97,
    "801": 50,
    "802": 98,
    "803": 51,
    "804": 99,
    "805": 52,
    "806": 100,
    "807": 53,
    "808": 101,
    "809": 54,
    "810": 102,
    "811": 55,
    "812": 48,
    "813": 56,
    "814": 49,
    "815": 34,
    "816": 44,
    "817": 34,
    "818": 116,
    "819": 121,
    "820": 112,
    "821": 101,
    "822": 34,
    "823": 58,
    "824": 34,
    "825": 101,
    "826": 120,
    "827": 112,
    "828": 114,
    "829": 101,
    "830": 115,
    "831": 115,
    "832": 34,
    "833": 44,
    "834": 34,
    "835": 112,
    "836": 108,
    "837": 97,
    "838": 116,
    "839": 102,
    "840": 111,
    "841": 114,
    "842": 109,
    "843": 34,
    "844": 58,
    "845": 34,
    "846": 115,
    "847": 101,
    "848": 114,
    "849": 118,
    "850": 101,
    "851": 114,
    "852": 34,
    "853": 44,
    "854": 34,
    "855": 114,
    "856": 101,
    "857": 108,
    "858": 101,
    "859": 97,
    "860": 115,
    "861": 101,
    "862": 34,
    "863": 58,
    "864": 123,
    "865": 34,
    "866": 115,
    "867": 101,
    "868": 114,
    "869": 118,
    "870": 101,
    "871": 114,
    "872": 34,
    "873": 58,
    "874": 34,
    "875": 52,
    "876": 46,
    "877": 56,
    "878": 46,
    "879": 48,
    "880": 34,
    "881": 125,
    "882": 125,
    "883": 125
  },
  "attributes": {
    "entity": "order",
    "action": "complete"
  }
})

Mapped payload

A data mapping transforms the event payload before publish. The rewritten object becomes the Pub/Sub message body.

Event
{
  "name": "order complete",
  "data": {
    "id": "ORD-500",
    "total": 199.99,
    "currency": "EUR"
  },
  "context": {
    "shopping": [
      "complete",
      0
    ]
  },
  "globals": {
    "pagegroup": "shop"
  },
  "custom": {
    "completely": "random"
  },
  "user": {
    "id": "usr-789"
  },
  "nested": [
    {
      "entity": "product",
      "data": {
        "id": "ers",
        "name": "Everyday Ruck Snack",
        "color": "black",
        "size": "l",
        "price": 420
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "product",
      "data": {
        "id": "cc",
        "name": "Cool Cap",
        "size": "one size",
        "price": 42
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "gift",
      "data": {
        "name": "Surprise"
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    }
  ],
  "consent": {
    "functional": true
  },
  "id": "52597d5269679369",
  "trigger": "load",
  "entity": "order",
  "action": "complete",
  "timestamp": 1700001100,
  "timing": 3.14,
  "source": {
    "count": 1,
    "trace": "1a2b3c4d5e6f70819a2b3c4d5e6f7081",
    "type": "express",
    "platform": "server"
  }
}
Mapping
{
  "data": {
    "map": {
      "order_id": "data.id",
      "revenue": "data.total",
      "currency": "data.currency"
    }
  }
}
Out
topic("events", {
  "messageOrdering": false
});

publishMessage("events", {
  "data": {
    "0": 123,
    "1": 34,
    "2": 111,
    "3": 114,
    "4": 100,
    "5": 101,
    "6": 114,
    "7": 95,
    "8": 105,
    "9": 100,
    "10": 34,
    "11": 58,
    "12": 34,
    "13": 79,
    "14": 82,
    "15": 68,
    "16": 45,
    "17": 53,
    "18": 48,
    "19": 48,
    "20": 34,
    "21": 44,
    "22": 34,
    "23": 114,
    "24": 101,
    "25": 118,
    "26": 101,
    "27": 110,
    "28": 117,
    "29": 101,
    "30": 34,
    "31": 58,
    "32": 49,
    "33": 57,
    "34": 57,
    "35": 46,
    "36": 57,
    "37": 57,
    "38": 44,
    "39": 34,
    "40": 99,
    "41": 117,
    "42": 114,
    "43": 114,
    "44": 101,
    "45": 110,
    "46": 99,
    "47": 121,
    "48": 34,
    "49": 58,
    "50": 34,
    "51": 69,
    "52": 85,
    "53": 82,
    "54": 34,
    "55": 125
  }
})

Ordering key from user

A mapping resolves the ordering key from event.user.id, enabling per-user ordering for this publish.

Event
{
  "name": "order complete",
  "data": {
    "id": "ORD-500",
    "total": 199.99,
    "currency": "EUR"
  },
  "context": {
    "shopping": [
      "complete",
      0
    ]
  },
  "globals": {
    "pagegroup": "shop"
  },
  "custom": {
    "completely": "random"
  },
  "user": {
    "id": "usr-789"
  },
  "nested": [
    {
      "entity": "product",
      "data": {
        "id": "ers",
        "name": "Everyday Ruck Snack",
        "color": "black",
        "size": "l",
        "price": 420
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "product",
      "data": {
        "id": "cc",
        "name": "Cool Cap",
        "size": "one size",
        "price": 42
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "gift",
      "data": {
        "name": "Surprise"
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    }
  ],
  "consent": {
    "functional": true
  },
  "id": "52597d5269679369",
  "trigger": "load",
  "entity": "order",
  "action": "complete",
  "timestamp": 1700001100,
  "timing": 3.14,
  "source": {
    "count": 1,
    "trace": "1a2b3c4d5e6f70819a2b3c4d5e6f7081",
    "type": "express",
    "platform": "server"
  }
}
Mapping
{
  "settings": {
    "orderingKey": "user.id"
  }
}
Out
topic("events", {
  "messageOrdering": true
});

publishMessage("events", {
  "data": {
    "0": 123,
    "1": 34,
    "2": 110,
    "3": 97,
    "4": 109,
    "5": 101,
    "6": 34,
    "7": 58,
    "8": 34,
    "9": 111,
    "10": 114,
    "11": 100,
    "12": 101,
    "13": 114,
    "14": 32,
    "15": 99,
    "16": 111,
    "17": 109,
    "18": 112,
    "19": 108,
    "20": 101,
    "21": 116,
    "22": 101,
    "23": 34,
    "24": 44,
    "25": 34,
    "26": 100,
    "27": 97,
    "28": 116,
    "29": 97,
    "30": 34,
    "31": 58,
    "32": 123,
    "33": 34,
    "34": 105,
    "35": 100,
    "36": 34,
    "37": 58,
    "38": 34,
    "39": 79,
    "40": 82,
    "41": 68,
    "42": 45,
    "43": 53,
    "44": 48,
    "45": 48,
    "46": 34,
    "47": 44,
    "48": 34,
    "49": 116,
    "50": 111,
    "51": 116,
    "52": 97,
    "53": 108,
    "54": 34,
    "55": 58,
    "56": 49,
    "57": 57,
    "58": 57,
    "59": 46,
    "60": 57,
    "61": 57,
    "62": 44,
    "63": 34,
    "64": 99,
    "65": 117,
    "66": 114,
    "67": 114,
    "68": 101,
    "69": 110,
    "70": 99,
    "71": 121,
    "72": 34,
    "73": 58,
    "74": 34,
    "75": 69,
    "76": 85,
    "77": 82,
    "78": 34,
    "79": 125,
    "80": 44,
    "81": 34,
    "82": 99,
    "83": 111,
    "84": 110,
    "85": 116,
    "86": 101,
    "87": 120,
    "88": 116,
    "89": 34,
    "90": 58,
    "91": 123,
    "92": 34,
    "93": 115,
    "94": 104,
    "95": 111,
    "96": 112,
    "97": 112,
    "98": 105,
    "99": 110,
    "100": 103,
    "101": 34,
    "102": 58,
    "103": 91,
    "104": 34,
    "105": 99,
    "106": 111,
    "107": 109,
    "108": 112,
    "109": 108,
    "110": 101,
    "111": 116,
    "112": 101,
    "113": 34,
    "114": 44,
    "115": 48,
    "116": 93,
    "117": 125,
    "118": 44,
    "119": 34,
    "120": 103,
    "121": 108,
    "122": 111,
    "123": 98,
    "124": 97,
    "125": 108,
    "126": 115,
    "127": 34,
    "128": 58,
    "129": 123,
    "130": 34,
    "131": 112,
    "132": 97,
    "133": 103,
    "134": 101,
    "135": 103,
    "136": 114,
    "137": 111,
    "138": 117,
    "139": 112,
    "140": 34,
    "141": 58,
    "142": 34,
    "143": 115,
    "144": 104,
    "145": 111,
    "146": 112,
    "147": 34,
    "148": 125,
    "149": 44,
    "150": 34,
    "151": 99,
    "152": 117,
    "153": 115,
    "154": 116,
    "155": 111,
    "156": 109,
    "157": 34,
    "158": 58,
    "159": 123,
    "160": 34,
    "161": 99,
    "162": 111,
    "163": 109,
    "164": 112,
    "165": 108,
    "166": 101,
    "167": 116,
    "168": 101,
    "169": 108,
    "170": 121,
    "171": 34,
    "172": 58,
    "173": 34,
    "174": 114,
    "175": 97,
    "176": 110,
    "177": 100,
    "178": 111,
    "179": 109,
    "180": 34,
    "181": 125,
    "182": 44,
    "183": 34,
    "184": 117,
    "185": 115,
    "186": 101,
    "187": 114,
    "188": 34,
    "189": 58,
    "190": 123,
    "191": 34,
    "192": 105,
    "193": 100,
    "194": 34,
    "195": 58,
    "196": 34,
    "197": 117,
    "198": 115,
    "199": 114,
    "200": 45,
    "201": 55,
    "202": 56,
    "203": 57,
    "204": 34,
    "205": 125,
    "206": 44,
    "207": 34,
    "208": 110,
    "209": 101,
    "210": 115,
    "211": 116,
    "212": 101,
    "213": 100,
    "214": 34,
    "215": 58,
    "216": 91,
    "217": 123,
    "218": 34,
    "219": 101,
    "220": 110,
    "221": 116,
    "222": 105,
    "223": 116,
    "224": 121,
    "225": 34,
    "226": 58,
    "227": 34,
    "228": 112,
    "229": 114,
    "230": 111,
    "231": 100,
    "232": 117,
    "233": 99,
    "234": 116,
    "235": 34,
    "236": 44,
    "237": 34,
    "238": 100,
    "239": 97,
    "240": 116,
    "241": 97,
    "242": 34,
    "243": 58,
    "244": 123,
    "245": 34,
    "246": 105,
    "247": 100,
    "248": 34,
    "249": 58,
    "250": 34,
    "251": 101,
    "252": 114,
    "253": 115,
    "254": 34,
    "255": 44,
    "256": 34,
    "257": 110,
    "258": 97,
    "259": 109,
    "260": 101,
    "261": 34,
    "262": 58,
    "263": 34,
    "264": 69,
    "265": 118,
    "266": 101,
    "267": 114,
    "268": 121,
    "269": 100,
    "270": 97,
    "271": 121,
    "272": 32,
    "273": 82,
    "274": 117,
    "275": 99,
    "276": 107,
    "277": 32,
    "278": 83,
    "279": 110,
    "280": 97,
    "281": 99,
    "282": 107,
    "283": 34,
    "284": 44,
    "285": 34,
    "286": 99,
    "287": 111,
    "288": 108,
    "289": 111,
    "290": 114,
    "291": 34,
    "292": 58,
    "293": 34,
    "294": 98,
    "295": 108,
    "296": 97,
    "297": 99,
    "298": 107,
    "299": 34,
    "300": 44,
    "301": 34,
    "302": 115,
    "303": 105,
    "304": 122,
    "305": 101,
    "306": 34,
    "307": 58,
    "308": 34,
    "309": 108,
    "310": 34,
    "311": 44,
    "312": 34,
    "313": 112,
    "314": 114,
    "315": 105,
    "316": 99,
    "317": 101,
    "318": 34,
    "319": 58,
    "320": 52,
    "321": 50,
    "322": 48,
    "323": 125,
    "324": 44,
    "325": 34,
    "326": 99,
    "327": 111,
    "328": 110,
    "329": 116,
    "330": 101,
    "331": 120,
    "332": 116,
    "333": 34,
    "334": 58,
    "335": 123,
    "336": 34,
    "337": 115,
    "338": 104,
    "339": 111,
    "340": 112,
    "341": 112,
    "342": 105,
    "343": 110,
    "344": 103,
    "345": 34,
    "346": 58,
    "347": 91,
    "348": 34,
    "349": 99,
    "350": 111,
    "351": 109,
    "352": 112,
    "353": 108,
    "354": 101,
    "355": 116,
    "356": 101,
    "357": 34,
    "358": 44,
    "359": 48,
    "360": 93,
    "361": 125,
    "362": 44,
    "363": 34,
    "364": 110,
    "365": 101,
    "366": 115,
    "367": 116,
    "368": 101,
    "369": 100,
    "370": 34,
    "371": 58,
    "372": 91,
    "373": 93,
    "374": 125,
    "375": 44,
    "376": 123,
    "377": 34,
    "378": 101,
    "379": 110,
    "380": 116,
    "381": 105,
    "382": 116,
    "383": 121,
    "384": 34,
    "385": 58,
    "386": 34,
    "387": 112,
    "388": 114,
    "389": 111,
    "390": 100,
    "391": 117,
    "392": 99,
    "393": 116,
    "394": 34,
    "395": 44,
    "396": 34,
    "397": 100,
    "398": 97,
    "399": 116,
    "400": 97,
    "401": 34,
    "402": 58,
    "403": 123,
    "404": 34,
    "405": 105,
    "406": 100,
    "407": 34,
    "408": 58,
    "409": 34,
    "410": 99,
    "411": 99,
    "412": 34,
    "413": 44,
    "414": 34,
    "415": 110,
    "416": 97,
    "417": 109,
    "418": 101,
    "419": 34,
    "420": 58,
    "421": 34,
    "422": 67,
    "423": 111,
    "424": 111,
    "425": 108,
    "426": 32,
    "427": 67,
    "428": 97,
    "429": 112,
    "430": 34,
    "431": 44,
    "432": 34,
    "433": 115,
    "434": 105,
    "435": 122,
    "436": 101,
    "437": 34,
    "438": 58,
    "439": 34,
    "440": 111,
    "441": 110,
    "442": 101,
    "443": 32,
    "444": 115,
    "445": 105,
    "446": 122,
    "447": 101,
    "448": 34,
    "449": 44,
    "450": 34,
    "451": 112,
    "452": 114,
    "453": 105,
    "454": 99,
    "455": 101,
    "456": 34,
    "457": 58,
    "458": 52,
    "459": 50,
    "460": 125,
    "461": 44,
    "462": 34,
    "463": 99,
    "464": 111,
    "465": 110,
    "466": 116,
    "467": 101,
    "468": 120,
    "469": 116,
    "470": 34,
    "471": 58,
    "472": 123,
    "473": 34,
    "474": 115,
    "475": 104,
    "476": 111,
    "477": 112,
    "478": 112,
    "479": 105,
    "480": 110,
    "481": 103,
    "482": 34,
    "483": 58,
    "484": 91,
    "485": 34,
    "486": 99,
    "487": 111,
    "488": 109,
    "489": 112,
    "490": 108,
    "491": 101,
    "492": 116,
    "493": 101,
    "494": 34,
    "495": 44,
    "496": 48,
    "497": 93,
    "498": 125,
    "499": 44,
    "500": 34,
    "501": 110,
    "502": 101,
    "503": 115,
    "504": 116,
    "505": 101,
    "506": 100,
    "507": 34,
    "508": 58,
    "509": 91,
    "510": 93,
    "511": 125,
    "512": 44,
    "513": 123,
    "514": 34,
    "515": 101,
    "516": 110,
    "517": 116,
    "518": 105,
    "519": 116,
    "520": 121,
    "521": 34,
    "522": 58,
    "523": 34,
    "524": 103,
    "525": 105,
    "526": 102,
    "527": 116,
    "528": 34,
    "529": 44,
    "530": 34,
    "531": 100,
    "532": 97,
    "533": 116,
    "534": 97,
    "535": 34,
    "536": 58,
    "537": 123,
    "538": 34,
    "539": 110,
    "540": 97,
    "541": 109,
    "542": 101,
    "543": 34,
    "544": 58,
    "545": 34,
    "546": 83,
    "547": 117,
    "548": 114,
    "549": 112,
    "550": 114,
    "551": 105,
    "552": 115,
    "553": 101,
    "554": 34,
    "555": 125,
    "556": 44,
    "557": 34,
    "558": 99,
    "559": 111,
    "560": 110,
    "561": 116,
    "562": 101,
    "563": 120,
    "564": 116,
    "565": 34,
    "566": 58,
    "567": 123,
    "568": 34,
    "569": 115,
    "570": 104,
    "571": 111,
    "572": 112,
    "573": 112,
    "574": 105,
    "575": 110,
    "576": 103,
    "577": 34,
    "578": 58,
    "579": 91,
    "580": 34,
    "581": 99,
    "582": 111,
    "583": 109,
    "584": 112,
    "585": 108,
    "586": 101,
    "587": 116,
    "588": 101,
    "589": 34,
    "590": 44,
    "591": 48,
    "592": 93,
    "593": 125,
    "594": 44,
    "595": 34,
    "596": 110,
    "597": 101,
    "598": 115,
    "599": 116,
    "600": 101,
    "601": 100,
    "602": 34,
    "603": 58,
    "604": 91,
    "605": 93,
    "606": 125,
    "607": 93,
    "608": 44,
    "609": 34,
    "610": 99,
    "611": 111,
    "612": 110,
    "613": 115,
    "614": 101,
    "615": 110,
    "616": 116,
    "617": 34,
    "618": 58,
    "619": 123,
    "620": 34,
    "621": 102,
    "622": 117,
    "623": 110,
    "624": 99,
    "625": 116,
    "626": 105,
    "627": 111,
    "628": 110,
    "629": 97,
    "630": 108,
    "631": 34,
    "632": 58,
    "633": 116,
    "634": 114,
    "635": 117,
    "636": 101,
    "637": 125,
    "638": 44,
    "639": 34,
    "640": 105,
    "641": 100,
    "642": 34,
    "643": 58,
    "644": 34,
    "645": 53,
    "646": 50,
    "647": 53,
    "648": 57,
    "649": 55,
    "650": 100,
    "651": 53,
    "652": 50,
    "653": 54,
    "654": 57,
    "655": 54,
    "656": 55,
    "657": 57,
    "658": 51,
    "659": 54,
    "660": 57,
    "661": 34,
    "662": 44,
    "663": 34,
    "664": 116,
    "665": 114,
    "666": 105,
    "667": 103,
    "668": 103,
    "669": 101,
    "670": 114,
    "671": 34,
    "672": 58,
    "673": 34,
    "674": 108,
    "675": 111,
    "676": 97,
    "677": 100,
    "678": 34,
    "679": 44,
    "680": 34,
    "681": 101,
    "682": 110,
    "683": 116,
    "684": 105,
    "685": 116,
    "686": 121,
    "687": 34,
    "688": 58,
    "689": 34,
    "690": 111,
    "691": 114,
    "692": 100,
    "693": 101,
    "694": 114,
    "695": 34,
    "696": 44,
    "697": 34,
    "698": 97,
    "699": 99,
    "700": 116,
    "701": 105,
    "702": 111,
    "703": 110,
    "704": 34,
    "705": 58,
    "706": 34,
    "707": 99,
    "708": 111,
    "709": 109,
    "710": 112,
    "711": 108,
    "712": 101,
    "713": 116,
    "714": 101,
    "715": 34,
    "716": 44,
    "717": 34,
    "718": 116,
    "719": 105,
    "720": 109,
    "721": 101,
    "722": 115,
    "723": 116,
    "724": 97,
    "725": 109,
    "726": 112,
    "727": 34,
    "728": 58,
    "729": 49,
    "730": 55,
    "731": 48,
    "732": 48,
    "733": 48,
    "734": 48,
    "735": 49,
    "736": 49,
    "737": 48,
    "738": 48,
    "739": 44,
    "740": 34,
    "741": 116,
    "742": 105,
    "743": 109,
    "744": 105,
    "745": 110,
    "746": 103,
    "747": 34,
    "748": 58,
    "749": 51,
    "750": 46,
    "751": 49,
    "752": 52,
    "753": 44,
    "754": 34,
    "755": 115,
    "756": 111,
    "757": 117,
    "758": 114,
    "759": 99,
    "760": 101,
    "761": 34,
    "762": 58,
    "763": 123,
    "764": 34,
    "765": 99,
    "766": 111,
    "767": 117,
    "768": 110,
    "769": 116,
    "770": 34,
    "771": 58,
    "772": 49,
    "773": 44,
    "774": 34,
    "775": 116,
    "776": 114,
    "777": 97,
    "778": 99,
    "779": 101,
    "780": 34,
    "781": 58,
    "782": 34,
    "783": 49,
    "784": 97,
    "785": 50,
    "786": 98,
    "787": 51,
    "788": 99,
    "789": 52,
    "790": 100,
    "791": 53,
    "792": 101,
    "793": 54,
    "794": 102,
    "795": 55,
    "796": 48,
    "797": 56,
    "798": 49,
    "799": 57,
    "800": 97,
    "801": 50,
    "802": 98,
    "803": 51,
    "804": 99,
    "805": 52,
    "806": 100,
    "807": 53,
    "808": 101,
    "809": 54,
    "810": 102,
    "811": 55,
    "812": 48,
    "813": 56,
    "814": 49,
    "815": 34,
    "816": 44,
    "817": 34,
    "818": 116,
    "819": 121,
    "820": 112,
    "821": 101,
    "822": 34,
    "823": 58,
    "824": 34,
    "825": 101,
    "826": 120,
    "827": 112,
    "828": 114,
    "829": 101,
    "830": 115,
    "831": 115,
    "832": 34,
    "833": 44,
    "834": 34,
    "835": 112,
    "836": 108,
    "837": 97,
    "838": 116,
    "839": 102,
    "840": 111,
    "841": 114,
    "842": 109,
    "843": 34,
    "844": 58,
    "845": 34,
    "846": 115,
    "847": 101,
    "848": 114,
    "849": 118,
    "850": 101,
    "851": 114,
    "852": 34,
    "853": 44,
    "854": 34,
    "855": 114,
    "856": 101,
    "857": 108,
    "858": 101,
    "859": 97,
    "860": 115,
    "861": 101,
    "862": 34,
    "863": 58,
    "864": 123,
    "865": 34,
    "866": 115,
    "867": 101,
    "868": 114,
    "869": 118,
    "870": 101,
    "871": 114,
    "872": 34,
    "873": 58,
    "874": 34,
    "875": 52,
    "876": 46,
    "877": 56,
    "878": 46,
    "879": 48,
    "880": 34,
    "881": 125,
    "882": 125,
    "883": 125
  },
  "orderingKey": "usr-789"
})

Topic override

A mapping rule overrides the destination default topic so order events are published to a dedicated topic.

Event
{
  "name": "order complete",
  "data": {
    "id": "ORD-500",
    "total": 199.99,
    "currency": "EUR"
  },
  "context": {
    "shopping": [
      "complete",
      0
    ]
  },
  "globals": {
    "pagegroup": "shop"
  },
  "custom": {
    "completely": "random"
  },
  "user": {
    "id": "usr-789"
  },
  "nested": [
    {
      "entity": "product",
      "data": {
        "id": "ers",
        "name": "Everyday Ruck Snack",
        "color": "black",
        "size": "l",
        "price": 420
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "product",
      "data": {
        "id": "cc",
        "name": "Cool Cap",
        "size": "one size",
        "price": 42
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    },
    {
      "entity": "gift",
      "data": {
        "name": "Surprise"
      },
      "context": {
        "shopping": [
          "complete",
          0
        ]
      },
      "nested": []
    }
  ],
  "consent": {
    "functional": true
  },
  "id": "52597d5269679369",
  "trigger": "load",
  "entity": "order",
  "action": "complete",
  "timestamp": 1700001100,
  "timing": 3.14,
  "source": {
    "count": 1,
    "trace": "1a2b3c4d5e6f70819a2b3c4d5e6f7081",
    "type": "express",
    "platform": "server"
  }
}
Mapping
{
  "settings": {
    "topic": "orders"
  }
}
Out
topic("orders", {
  "messageOrdering": false
});

publishMessage("orders", {
  "data": {
    "0": 123,
    "1": 34,
    "2": 110,
    "3": 97,
    "4": 109,
    "5": 101,
    "6": 34,
    "7": 58,
    "8": 34,
    "9": 111,
    "10": 114,
    "11": 100,
    "12": 101,
    "13": 114,
    "14": 32,
    "15": 99,
    "16": 111,
    "17": 109,
    "18": 112,
    "19": 108,
    "20": 101,
    "21": 116,
    "22": 101,
    "23": 34,
    "24": 44,
    "25": 34,
    "26": 100,
    "27": 97,
    "28": 116,
    "29": 97,
    "30": 34,
    "31": 58,
    "32": 123,
    "33": 34,
    "34": 105,
    "35": 100,
    "36": 34,
    "37": 58,
    "38": 34,
    "39": 79,
    "40": 82,
    "41": 68,
    "42": 45,
    "43": 53,
    "44": 48,
    "45": 48,
    "46": 34,
    "47": 44,
    "48": 34,
    "49": 116,
    "50": 111,
    "51": 116,
    "52": 97,
    "53": 108,
    "54": 34,
    "55": 58,
    "56": 49,
    "57": 57,
    "58": 57,
    "59": 46,
    "60": 57,
    "61": 57,
    "62": 44,
    "63": 34,
    "64": 99,
    "65": 117,
    "66": 114,
    "67": 114,
    "68": 101,
    "69": 110,
    "70": 99,
    "71": 121,
    "72": 34,
    "73": 58,
    "74": 34,
    "75": 69,
    "76": 85,
    "77": 82,
    "78": 34,
    "79": 125,
    "80": 44,
    "81": 34,
    "82": 99,
    "83": 111,
    "84": 110,
    "85": 116,
    "86": 101,
    "87": 120,
    "88": 116,
    "89": 34,
    "90": 58,
    "91": 123,
    "92": 34,
    "93": 115,
    "94": 104,
    "95": 111,
    "96": 112,
    "97": 112,
    "98": 105,
    "99": 110,
    "100": 103,
    "101": 34,
    "102": 58,
    "103": 91,
    "104": 34,
    "105": 99,
    "106": 111,
    "107": 109,
    "108": 112,
    "109": 108,
    "110": 101,
    "111": 116,
    "112": 101,
    "113": 34,
    "114": 44,
    "115": 48,
    "116": 93,
    "117": 125,
    "118": 44,
    "119": 34,
    "120": 103,
    "121": 108,
    "122": 111,
    "123": 98,
    "124": 97,
    "125": 108,
    "126": 115,
    "127": 34,
    "128": 58,
    "129": 123,
    "130": 34,
    "131": 112,
    "132": 97,
    "133": 103,
    "134": 101,
    "135": 103,
    "136": 114,
    "137": 111,
    "138": 117,
    "139": 112,
    "140": 34,
    "141": 58,
    "142": 34,
    "143": 115,
    "144": 104,
    "145": 111,
    "146": 112,
    "147": 34,
    "148": 125,
    "149": 44,
    "150": 34,
    "151": 99,
    "152": 117,
    "153": 115,
    "154": 116,
    "155": 111,
    "156": 109,
    "157": 34,
    "158": 58,
    "159": 123,
    "160": 34,
    "161": 99,
    "162": 111,
    "163": 109,
    "164": 112,
    "165": 108,
    "166": 101,
    "167": 116,
    "168": 101,
    "169": 108,
    "170": 121,
    "171": 34,
    "172": 58,
    "173": 34,
    "174": 114,
    "175": 97,
    "176": 110,
    "177": 100,
    "178": 111,
    "179": 109,
    "180": 34,
    "181": 125,
    "182": 44,
    "183": 34,
    "184": 117,
    "185": 115,
    "186": 101,
    "187": 114,
    "188": 34,
    "189": 58,
    "190": 123,
    "191": 34,
    "192": 105,
    "193": 100,
    "194": 34,
    "195": 58,
    "196": 34,
    "197": 117,
    "198": 115,
    "199": 114,
    "200": 45,
    "201": 55,
    "202": 56,
    "203": 57,
    "204": 34,
    "205": 125,
    "206": 44,
    "207": 34,
    "208": 110,
    "209": 101,
    "210": 115,
    "211": 116,
    "212": 101,
    "213": 100,
    "214": 34,
    "215": 58,
    "216": 91,
    "217": 123,
    "218": 34,
    "219": 101,
    "220": 110,
    "221": 116,
    "222": 105,
    "223": 116,
    "224": 121,
    "225": 34,
    "226": 58,
    "227": 34,
    "228": 112,
    "229": 114,
    "230": 111,
    "231": 100,
    "232": 117,
    "233": 99,
    "234": 116,
    "235": 34,
    "236": 44,
    "237": 34,
    "238": 100,
    "239": 97,
    "240": 116,
    "241": 97,
    "242": 34,
    "243": 58,
    "244": 123,
    "245": 34,
    "246": 105,
    "247": 100,
    "248": 34,
    "249": 58,
    "250": 34,
    "251": 101,
    "252": 114,
    "253": 115,
    "254": 34,
    "255": 44,
    "256": 34,
    "257": 110,
    "258": 97,
    "259": 109,
    "260": 101,
    "261": 34,
    "262": 58,
    "263": 34,
    "264": 69,
    "265": 118,
    "266": 101,
    "267": 114,
    "268": 121,
    "269": 100,
    "270": 97,
    "271": 121,
    "272": 32,
    "273": 82,
    "274": 117,
    "275": 99,
    "276": 107,
    "277": 32,
    "278": 83,
    "279": 110,
    "280": 97,
    "281": 99,
    "282": 107,
    "283": 34,
    "284": 44,
    "285": 34,
    "286": 99,
    "287": 111,
    "288": 108,
    "289": 111,
    "290": 114,
    "291": 34,
    "292": 58,
    "293": 34,
    "294": 98,
    "295": 108,
    "296": 97,
    "297": 99,
    "298": 107,
    "299": 34,
    "300": 44,
    "301": 34,
    "302": 115,
    "303": 105,
    "304": 122,
    "305": 101,
    "306": 34,
    "307": 58,
    "308": 34,
    "309": 108,
    "310": 34,
    "311": 44,
    "312": 34,
    "313": 112,
    "314": 114,
    "315": 105,
    "316": 99,
    "317": 101,
    "318": 34,
    "319": 58,
    "320": 52,
    "321": 50,
    "322": 48,
    "323": 125,
    "324": 44,
    "325": 34,
    "326": 99,
    "327": 111,
    "328": 110,
    "329": 116,
    "330": 101,
    "331": 120,
    "332": 116,
    "333": 34,
    "334": 58,
    "335": 123,
    "336": 34,
    "337": 115,
    "338": 104,
    "339": 111,
    "340": 112,
    "341": 112,
    "342": 105,
    "343": 110,
    "344": 103,
    "345": 34,
    "346": 58,
    "347": 91,
    "348": 34,
    "349": 99,
    "350": 111,
    "351": 109,
    "352": 112,
    "353": 108,
    "354": 101,
    "355": 116,
    "356": 101,
    "357": 34,
    "358": 44,
    "359": 48,
    "360": 93,
    "361": 125,
    "362": 44,
    "363": 34,
    "364": 110,
    "365": 101,
    "366": 115,
    "367": 116,
    "368": 101,
    "369": 100,
    "370": 34,
    "371": 58,
    "372": 91,
    "373": 93,
    "374": 125,
    "375": 44,
    "376": 123,
    "377": 34,
    "378": 101,
    "379": 110,
    "380": 116,
    "381": 105,
    "382": 116,
    "383": 121,
    "384": 34,
    "385": 58,
    "386": 34,
    "387": 112,
    "388": 114,
    "389": 111,
    "390": 100,
    "391": 117,
    "392": 99,
    "393": 116,
    "394": 34,
    "395": 44,
    "396": 34,
    "397": 100,
    "398": 97,
    "399": 116,
    "400": 97,
    "401": 34,
    "402": 58,
    "403": 123,
    "404": 34,
    "405": 105,
    "406": 100,
    "407": 34,
    "408": 58,
    "409": 34,
    "410": 99,
    "411": 99,
    "412": 34,
    "413": 44,
    "414": 34,
    "415": 110,
    "416": 97,
    "417": 109,
    "418": 101,
    "419": 34,
    "420": 58,
    "421": 34,
    "422": 67,
    "423": 111,
    "424": 111,
    "425": 108,
    "426": 32,
    "427": 67,
    "428": 97,
    "429": 112,
    "430": 34,
    "431": 44,
    "432": 34,
    "433": 115,
    "434": 105,
    "435": 122,
    "436": 101,
    "437": 34,
    "438": 58,
    "439": 34,
    "440": 111,
    "441": 110,
    "442": 101,
    "443": 32,
    "444": 115,
    "445": 105,
    "446": 122,
    "447": 101,
    "448": 34,
    "449": 44,
    "450": 34,
    "451": 112,
    "452": 114,
    "453": 105,
    "454": 99,
    "455": 101,
    "456": 34,
    "457": 58,
    "458": 52,
    "459": 50,
    "460": 125,
    "461": 44,
    "462": 34,
    "463": 99,
    "464": 111,
    "465": 110,
    "466": 116,
    "467": 101,
    "468": 120,
    "469": 116,
    "470": 34,
    "471": 58,
    "472": 123,
    "473": 34,
    "474": 115,
    "475": 104,
    "476": 111,
    "477": 112,
    "478": 112,
    "479": 105,
    "480": 110,
    "481": 103,
    "482": 34,
    "483": 58,
    "484": 91,
    "485": 34,
    "486": 99,
    "487": 111,
    "488": 109,
    "489": 112,
    "490": 108,
    "491": 101,
    "492": 116,
    "493": 101,
    "494": 34,
    "495": 44,
    "496": 48,
    "497": 93,
    "498": 125,
    "499": 44,
    "500": 34,
    "501": 110,
    "502": 101,
    "503": 115,
    "504": 116,
    "505": 101,
    "506": 100,
    "507": 34,
    "508": 58,
    "509": 91,
    "510": 93,
    "511": 125,
    "512": 44,
    "513": 123,
    "514": 34,
    "515": 101,
    "516": 110,
    "517": 116,
    "518": 105,
    "519": 116,
    "520": 121,
    "521": 34,
    "522": 58,
    "523": 34,
    "524": 103,
    "525": 105,
    "526": 102,
    "527": 116,
    "528": 34,
    "529": 44,
    "530": 34,
    "531": 100,
    "532": 97,
    "533": 116,
    "534": 97,
    "535": 34,
    "536": 58,
    "537": 123,
    "538": 34,
    "539": 110,
    "540": 97,
    "541": 109,
    "542": 101,
    "543": 34,
    "544": 58,
    "545": 34,
    "546": 83,
    "547": 117,
    "548": 114,
    "549": 112,
    "550": 114,
    "551": 105,
    "552": 115,
    "553": 101,
    "554": 34,
    "555": 125,
    "556": 44,
    "557": 34,
    "558": 99,
    "559": 111,
    "560": 110,
    "561": 116,
    "562": 101,
    "563": 120,
    "564": 116,
    "565": 34,
    "566": 58,
    "567": 123,
    "568": 34,
    "569": 115,
    "570": 104,
    "571": 111,
    "572": 112,
    "573": 112,
    "574": 105,
    "575": 110,
    "576": 103,
    "577": 34,
    "578": 58,
    "579": 91,
    "580": 34,
    "581": 99,
    "582": 111,
    "583": 109,
    "584": 112,
    "585": 108,
    "586": 101,
    "587": 116,
    "588": 101,
    "589": 34,
    "590": 44,
    "591": 48,
    "592": 93,
    "593": 125,
    "594": 44,
    "595": 34,
    "596": 110,
    "597": 101,
    "598": 115,
    "599": 116,
    "600": 101,
    "601": 100,
    "602": 34,
    "603": 58,
    "604": 91,
    "605": 93,
    "606": 125,
    "607": 93,
    "608": 44,
    "609": 34,
    "610": 99,
    "611": 111,
    "612": 110,
    "613": 115,
    "614": 101,
    "615": 110,
    "616": 116,
    "617": 34,
    "618": 58,
    "619": 123,
    "620": 34,
    "621": 102,
    "622": 117,
    "623": 110,
    "624": 99,
    "625": 116,
    "626": 105,
    "627": 111,
    "628": 110,
    "629": 97,
    "630": 108,
    "631": 34,
    "632": 58,
    "633": 116,
    "634": 114,
    "635": 117,
    "636": 101,
    "637": 125,
    "638": 44,
    "639": 34,
    "640": 105,
    "641": 100,
    "642": 34,
    "643": 58,
    "644": 34,
    "645": 53,
    "646": 50,
    "647": 53,
    "648": 57,
    "649": 55,
    "650": 100,
    "651": 53,
    "652": 50,
    "653": 54,
    "654": 57,
    "655": 54,
    "656": 55,
    "657": 57,
    "658": 51,
    "659": 54,
    "660": 57,
    "661": 34,
    "662": 44,
    "663": 34,
    "664": 116,
    "665": 114,
    "666": 105,
    "667": 103,
    "668": 103,
    "669": 101,
    "670": 114,
    "671": 34,
    "672": 58,
    "673": 34,
    "674": 108,
    "675": 111,
    "676": 97,
    "677": 100,
    "678": 34,
    "679": 44,
    "680": 34,
    "681": 101,
    "682": 110,
    "683": 116,
    "684": 105,
    "685": 116,
    "686": 121,
    "687": 34,
    "688": 58,
    "689": 34,
    "690": 111,
    "691": 114,
    "692": 100,
    "693": 101,
    "694": 114,
    "695": 34,
    "696": 44,
    "697": 34,
    "698": 97,
    "699": 99,
    "700": 116,
    "701": 105,
    "702": 111,
    "703": 110,
    "704": 34,
    "705": 58,
    "706": 34,
    "707": 99,
    "708": 111,
    "709": 109,
    "710": 112,
    "711": 108,
    "712": 101,
    "713": 116,
    "714": 101,
    "715": 34,
    "716": 44,
    "717": 34,
    "718": 116,
    "719": 105,
    "720": 109,
    "721": 101,
    "722": 115,
    "723": 116,
    "724": 97,
    "725": 109,
    "726": 112,
    "727": 34,
    "728": 58,
    "729": 49,
    "730": 55,
    "731": 48,
    "732": 48,
    "733": 48,
    "734": 48,
    "735": 49,
    "736": 49,
    "737": 48,
    "738": 48,
    "739": 44,
    "740": 34,
    "741": 116,
    "742": 105,
    "743": 109,
    "744": 105,
    "745": 110,
    "746": 103,
    "747": 34,
    "748": 58,
    "749": 51,
    "750": 46,
    "751": 49,
    "752": 52,
    "753": 44,
    "754": 34,
    "755": 115,
    "756": 111,
    "757": 117,
    "758": 114,
    "759": 99,
    "760": 101,
    "761": 34,
    "762": 58,
    "763": 123,
    "764": 34,
    "765": 99,
    "766": 111,
    "767": 117,
    "768": 110,
    "769": 116,
    "770": 34,
    "771": 58,
    "772": 49,
    "773": 44,
    "774": 34,
    "775": 116,
    "776": 114,
    "777": 97,
    "778": 99,
    "779": 101,
    "780": 34,
    "781": 58,
    "782": 34,
    "783": 49,
    "784": 97,
    "785": 50,
    "786": 98,
    "787": 51,
    "788": 99,
    "789": 52,
    "790": 100,
    "791": 53,
    "792": 101,
    "793": 54,
    "794": 102,
    "795": 55,
    "796": 48,
    "797": 56,
    "798": 49,
    "799": 57,
    "800": 97,
    "801": 50,
    "802": 98,
    "803": 51,
    "804": 99,
    "805": 52,
    "806": 100,
    "807": 53,
    "808": 101,
    "809": 54,
    "810": 102,
    "811": 55,
    "812": 48,
    "813": 56,
    "814": 49,
    "815": 34,
    "816": 44,
    "817": 34,
    "818": 116,
    "819": 121,
    "820": 112,
    "821": 101,
    "822": 34,
    "823": 58,
    "824": 34,
    "825": 101,
    "826": 120,
    "827": 112,
    "828": 114,
    "829": 101,
    "830": 115,
    "831": 115,
    "832": 34,
    "833": 44,
    "834": 34,
    "835": 112,
    "836": 108,
    "837": 97,
    "838": 116,
    "839": 102,
    "840": 111,
    "841": 114,
    "842": 109,
    "843": 34,
    "844": 58,
    "845": 34,
    "846": 115,
    "847": 101,
    "848": 114,
    "849": 118,
    "850": 101,
    "851": 114,
    "852": 34,
    "853": 44,
    "854": 34,
    "855": 114,
    "856": 101,
    "857": 108,
    "858": 101,
    "859": 97,
    "860": 115,
    "861": 101,
    "862": 34,
    "863": 58,
    "864": 123,
    "865": 34,
    "866": 115,
    "867": 101,
    "868": 114,
    "869": 118,
    "870": 101,
    "871": 114,
    "872": 34,
    "873": 58,
    "874": 34,
    "875": 52,
    "876": 46,
    "877": 56,
    "878": 46,
    "879": 48,
    "880": 34,
    "881": 125,
    "882": 125,
    "883": 125
  }
})

Page view

A page view is published to the default topic with no ordering key, demonstrating the simplest publish path.

Event
{
  "name": "page view",
  "data": {
    "title": "Documentation",
    "url": "https://example.com/docs"
  },
  "context": {
    "dev": [
      "test",
      1
    ]
  },
  "globals": {
    "pagegroup": "docs"
  },
  "custom": {
    "completely": "random"
  },
  "user": {
    "id": "us3r",
    "device": "c00k13",
    "session": "s3ss10n"
  },
  "nested": [
    {
      "entity": "child",
      "data": {
        "is": "subordinated"
      }
    }
  ],
  "consent": {
    "functional": true
  },
  "id": "408ff7a6af540165",
  "trigger": "load",
  "entity": "page",
  "action": "view",
  "timestamp": 1700001101,
  "timing": 3.14,
  "source": {
    "count": 1,
    "trace": "9f8e7d6c5b4a39281706f5e4d3c2b1a0",
    "type": "express",
    "platform": "server"
  }
}
Out
topic("events", {
  "messageOrdering": false
});

publishMessage("events", {
  "data": {
    "0": 123,
    "1": 34,
    "2": 110,
    "3": 97,
    "4": 109,
    "5": 101,
    "6": 34,
    "7": 58,
    "8": 34,
    "9": 112,
    "10": 97,
    "11": 103,
    "12": 101,
    "13": 32,
    "14": 118,
    "15": 105,
    "16": 101,
    "17": 119,
    "18": 34,
    "19": 44,
    "20": 34,
    "21": 100,
    "22": 97,
    "23": 116,
    "24": 97,
    "25": 34,
    "26": 58,
    "27": 123,
    "28": 34,
    "29": 116,
    "30": 105,
    "31": 116,
    "32": 108,
    "33": 101,
    "34": 34,
    "35": 58,
    "36": 34,
    "37": 68,
    "38": 111,
    "39": 99,
    "40": 117,
    "41": 109,
    "42": 101,
    "43": 110,
    "44": 116,
    "45": 97,
    "46": 116,
    "47": 105,
    "48": 111,
    "49": 110,
    "50": 34,
    "51": 44,
    "52": 34,
    "53": 117,
    "54": 114,
    "55": 108,
    "56": 34,
    "57": 58,
    "58": 34,
    "59": 104,
    "60": 116,
    "61": 116,
    "62": 112,
    "63": 115,
    "64": 58,
    "65": 47,
    "66": 47,
    "67": 101,
    "68": 120,
    "69": 97,
    "70": 109,
    "71": 112,
    "72": 108,
    "73": 101,
    "74": 46,
    "75": 99,
    "76": 111,
    "77": 109,
    "78": 47,
    "79": 100,
    "80": 111,
    "81": 99,
    "82": 115,
    "83": 34,
    "84": 125,
    "85": 44,
    "86": 34,
    "87": 99,
    "88": 111,
    "89": 110,
    "90": 116,
    "91": 101,
    "92": 120,
    "93": 116,
    "94": 34,
    "95": 58,
    "96": 123,
    "97": 34,
    "98": 100,
    "99": 101,
    "100": 118,
    "101": 34,
    "102": 58,
    "103": 91,
    "104": 34,
    "105": 116,
    "106": 101,
    "107": 115,
    "108": 116,
    "109": 34,
    "110": 44,
    "111": 49,
    "112": 93,
    "113": 125,
    "114": 44,
    "115": 34,
    "116": 103,
    "117": 108,
    "118": 111,
    "119": 98,
    "120": 97,
    "121": 108,
    "122": 115,
    "123": 34,
    "124": 58,
    "125": 123,
    "126": 34,
    "127": 112,
    "128": 97,
    "129": 103,
    "130": 101,
    "131": 103,
    "132": 114,
    "133": 111,
    "134": 117,
    "135": 112,
    "136": 34,
    "137": 58,
    "138": 34,
    "139": 100,
    "140": 111,
    "141": 99,
    "142": 115,
    "143": 34,
    "144": 125,
    "145": 44,
    "146": 34,
    "147": 99,
    "148": 117,
    "149": 115,
    "150": 116,
    "151": 111,
    "152": 109,
    "153": 34,
    "154": 58,
    "155": 123,
    "156": 34,
    "157": 99,
    "158": 111,
    "159": 109,
    "160": 112,
    "161": 108,
    "162": 101,
    "163": 116,
    "164": 101,
    "165": 108,
    "166": 121,
    "167": 34,
    "168": 58,
    "169": 34,
    "170": 114,
    "171": 97,
    "172": 110,
    "173": 100,
    "174": 111,
    "175": 109,
    "176": 34,
    "177": 125,
    "178": 44,
    "179": 34,
    "180": 117,
    "181": 115,
    "182": 101,
    "183": 114,
    "184": 34,
    "185": 58,
    "186": 123,
    "187": 34,
    "188": 105,
    "189": 100,
    "190": 34,
    "191": 58,
    "192": 34,
    "193": 117,
    "194": 115,
    "195": 51,
    "196": 114,
    "197": 34,
    "198": 44,
    "199": 34,
    "200": 100,
    "201": 101,
    "202": 118,
    "203": 105,
    "204": 99,
    "205": 101,
    "206": 34,
    "207": 58,
    "208": 34,
    "209": 99,
    "210": 48,
    "211": 48,
    "212": 107,
    "213": 49,
    "214": 51,
    "215": 34,
    "216": 44,
    "217": 34,
    "218": 115,
    "219": 101,
    "220": 115,
    "221": 115,
    "222": 105,
    "223": 111,
    "224": 110,
    "225": 34,
    "226": 58,
    "227": 34,
    "228": 115,
    "229": 51,
    "230": 115,
    "231": 115,
    "232": 49,
    "233": 48,
    "234": 110,
    "235": 34,
    "236": 125,
    "237": 44,
    "238": 34,
    "239": 110,
    "240": 101,
    "241": 115,
    "242": 116,
    "243": 101,
    "244": 100,
    "245": 34,
    "246": 58,
    "247": 91,
    "248": 123,
    "249": 34,
    "250": 101,
    "251": 110,
    "252": 116,
    "253": 105,
    "254": 116,
    "255": 121,
    "256": 34,
    "257": 58,
    "258": 34,
    "259": 99,
    "260": 104,
    "261": 105,
    "262": 108,
    "263": 100,
    "264": 34,
    "265": 44,
    "266": 34,
    "267": 100,
    "268": 97,
    "269": 116,
    "270": 97,
    "271": 34,
    "272": 58,
    "273": 123,
    "274": 34,
    "275": 105,
    "276": 115,
    "277": 34,
    "278": 58,
    "279": 34,
    "280": 115,
    "281": 117,
    "282": 98,
    "283": 111,
    "284": 114,
    "285": 100,
    "286": 105,
    "287": 110,
    "288": 97,
    "289": 116,
    "290": 101,
    "291": 100,
    "292": 34,
    "293": 125,
    "294": 125,
    "295": 93,
    "296": 44,
    "297": 34,
    "298": 99,
    "299": 111,
    "300": 110,
    "301": 115,
    "302": 101,
    "303": 110,
    "304": 116,
    "305": 34,
    "306": 58,
    "307": 123,
    "308": 34,
    "309": 102,
    "310": 117,
    "311": 110,
    "312": 99,
    "313": 116,
    "314": 105,
    "315": 111,
    "316": 110,
    "317": 97,
    "318": 108,
    "319": 34,
    "320": 58,
    "321": 116,
    "322": 114,
    "323": 117,
    "324": 101,
    "325": 125,
    "326": 44,
    "327": 34,
    "328": 105,
    "329": 100,
    "330": 34,
    "331": 58,
    "332": 34,
    "333": 52,
    "334": 48,
    "335": 56,
    "336": 102,
    "337": 102,
    "338": 55,
    "339": 97,
    "340": 54,
    "341": 97,
    "342": 102,
    "343": 53,
    "344": 52,
    "345": 48,
    "346": 49,
    "347": 54,
    "348": 53,
    "349": 34,
    "350": 44,
    "351": 34,
    "352": 116,
    "353": 114,
    "354": 105,
    "355": 103,
    "356": 103,
    "357": 101,
    "358": 114,
    "359": 34,
    "360": 58,
    "361": 34,
    "362": 108,
    "363": 111,
    "364": 97,
    "365": 100,
    "366": 34,
    "367": 44,
    "368": 34,
    "369": 101,
    "370": 110,
    "371": 116,
    "372": 105,
    "373": 116,
    "374": 121,
    "375": 34,
    "376": 58,
    "377": 34,
    "378": 112,
    "379": 97,
    "380": 103,
    "381": 101,
    "382": 34,
    "383": 44,
    "384": 34,
    "385": 97,
    "386": 99,
    "387": 116,
    "388": 105,
    "389": 111,
    "390": 110,
    "391": 34,
    "392": 58,
    "393": 34,
    "394": 118,
    "395": 105,
    "396": 101,
    "397": 119,
    "398": 34,
    "399": 44,
    "400": 34,
    "401": 116,
    "402": 105,
    "403": 109,
    "404": 101,
    "405": 115,
    "406": 116,
    "407": 97,
    "408": 109,
    "409": 112,
    "410": 34,
    "411": 58,
    "412": 49,
    "413": 55,
    "414": 48,
    "415": 48,
    "416": 48,
    "417": 48,
    "418": 49,
    "419": 49,
    "420": 48,
    "421": 49,
    "422": 44,
    "423": 34,
    "424": 116,
    "425": 105,
    "426": 109,
    "427": 105,
    "428": 110,
    "429": 103,
    "430": 34,
    "431": 58,
    "432": 51,
    "433": 46,
    "434": 49,
    "435": 52,
    "436": 44,
    "437": 34,
    "438": 115,
    "439": 111,
    "440": 117,
    "441": 114,
    "442": 99,
    "443": 101,
    "444": 34,
    "445": 58,
    "446": 123,
    "447": 34,
    "448": 99,
    "449": 111,
    "450": 117,
    "451": 110,
    "452": 116,
    "453": 34,
    "454": 58,
    "455": 49,
    "456": 44,
    "457": 34,
    "458": 116,
    "459": 114,
    "460": 97,
    "461": 99,
    "462": 101,
    "463": 34,
    "464": 58,
    "465": 34,
    "466": 57,
    "467": 102,
    "468": 56,
    "469": 101,
    "470": 55,
    "471": 100,
    "472": 54,
    "473": 99,
    "474": 53,
    "475": 98,
    "476": 52,
    "477": 97,
    "478": 51,
    "479": 57,
    "480": 50,
    "481": 56,
    "482": 49,
    "483": 55,
    "484": 48,
    "485": 54,
    "486": 102,
    "487": 53,
    "488": 101,
    "489": 52,
    "490": 100,
    "491": 51,
    "492": 99,
    "493": 50,
    "494": 98,
    "495": 49,
    "496": 97,
    "497": 48,
    "498": 34,
    "499": 44,
    "500": 34,
    "501": 116,
    "502": 121,
    "503": 112,
    "504": 101,
    "505": 34,
    "506": 58,
    "507": 34,
    "508": 101,
    "509": 120,
    "510": 112,
    "511": 114,
    "512": 101,
    "513": 115,
    "514": 115,
    "515": 34,
    "516": 44,
    "517": 34,
    "518": 112,
    "519": 108,
    "520": 97,
    "521": 116,
    "522": 102,
    "523": 111,
    "524": 114,
    "525": 109,
    "526": 34,
    "527": 58,
    "528": 34,
    "529": 115,
    "530": 101,
    "531": 114,
    "532": 118,
    "533": 101,
    "534": 114,
    "535": 34,
    "536": 44,
    "537": 34,
    "538": 114,
    "539": 101,
    "540": 108,
    "541": 101,
    "542": 97,
    "543": 115,
    "544": 101,
    "545": 34,
    "546": 58,
    "547": 123,
    "548": 34,
    "549": 115,
    "550": 101,
    "551": 114,
    "552": 118,
    "553": 101,
    "554": 114,
    "555": 34,
    "556": 58,
    "557": 34,
    "558": 52,
    "559": 46,
    "560": 56,
    "561": 46,
    "562": 48,
    "563": 34,
    "564": 125,
    "565": 125,
    "566": 125
  }
})

Authentication​

Three modes, evaluated in order:

  1. Application Default Credentials (ADC). Nothing to configure beyond projectId. Works on GCP-native runtimes (Cloud Run, Cloud Functions, GKE, GCE) where the runtime service account is attached, and locally with gcloud auth application-default login.
  2. Service account JSON. Pass credentials via config.credentials, either as a parsed object or a JSON string (the destination JSON-parses strings). Pair with $env.NAME to inject from an environment variable. (The package-specific settings.credentials still works but is deprecated.)
  3. Pre-configured client. Pass an existing PubSub SDK instance as settings.client. Useful for shared clients across destinations or custom transport configuration.

When settings.projectId and the credentials' project_id both resolve, the top-level settings.projectId wins. The runtime publish target stays unambiguous.

Ordering​

orderingKey is a Mapping.Value resolved per event. Truthy resolved values enable per-key ordering, the topic handle is constructed with messageOrdering: true, and the resolved key flows on the publish.

{
"settings": {
"projectId": "my-project",
"topic": "user-events",
"orderingKey": "user.id"
}
}

Per-rule overrides live under mapping.<entity>.<action>.settings.orderingKey.

If a publish fails for an ordered key, Pub/Sub permanently halts subsequent publishes for that key until topic.resumePublishing(key) is called. The destination handles this automatically: on publish failure for an ordered key it calls resumePublishing immediately and re-throws so the caller observes the original error.

Attributes​

settings.attributes is a Mapping.Map of attribute name to mapping value. Each value is resolved per event and stringified. Per-rule overrides under mapping.<entity>.<action>.settings.attributes are merged onto the defaults.

{
"settings": {
"projectId": "my-project",
"topic": "events",
"attributes": {
"tenant": "user.tenant_id",
"schema_version": { "value": "v4" }
}
}
}

Setup​

Provision the topic once per environment:

walkeros setup destination.pubsub

Idempotent: re-running on an existing topic logs setup: topic exists and runs drift detection. Drift on messageStoragePolicy.allowedPersistenceRegions, messageRetentionDuration, kmsKeyName, or labels emits WARN setup.drift {...} and never auto-mutates. Migrations are an operator decision.

config.setup:

  • false (default): no provisioning. Operator must run setup explicitly.
  • true: provisions with safe defaults (EU multi-region storage policy).
  • { messageStoragePolicy, messageRetentionDuration, kmsKeyName, labels }: object form for explicit overrides.

Default storage regions: ['europe-west1', 'europe-west3', 'europe-west4'] (EU multi-region). Override messageStoragePolicy.allowedPersistenceRegions for projects with org policies that restrict geography.

The provisioning identity needs pubsub.topics.create and pubsub.topics.get on the project. The runtime publish identity needs roles/pubsub.publisher on the topic itself.

Subscription provisioning is owned by the Pub/Sub source, not this destination.

Emulator​

The official Pub/Sub emulator runs locally for development:

gcloud beta emulators pubsub start --host-port=localhost:8085
export PUBSUB_EMULATOR_HOST=localhost:8085

The SDK automatically picks up PUBSUB_EMULATOR_HOST. For explicit configuration, set settings.apiEndpoint (e.g. localhost:8085).

Simulate​

walkeros push --simulate destination.pubsub runs offline with the package's mock Pub/Sub client and prints the publish it would make; nothing reaches GCP. The step's import (destinationPubSub) selects the Pub/Sub examples and mock, not BigQuery's.

success: true
  destination.pubsub
    mapping: none
    call PubSub.topic.publishMessage({"data":"{\"name\":\"order complete\",...}"})

Troubleshooting​

  • NOT_FOUND on publish: the topic does not exist. Run walkeros setup destination.<id> once.
  • PERMISSION_DENIED / UNAUTHENTICATED: the runtime service account lacks roles/pubsub.publisher on the topic, or ADC is not configured. The destination logs the actionable message including the topic and project IDs.
  • Ordering stuck: a previous publish for an ordering key failed. The destination calls resumePublishing automatically; if stalls persist, check publish-side error logs for the original failure.

Next steps​

💡 Need implementation support?
elbwalker offers hands-on support: setup review, measurement planning, destination mapping, and live troubleshooting. Book a 2-hour session (€399)