{
  "$meta": {
    "package": "@walkeros/web-destination-piwikpro",
    "version": "4.3.2",
    "type": "destination",
    "platform": [
      "web"
    ],
    "docs": "https://www.walkeros.io/docs/destinations/web/piwikpro",
    "source": "https://github.com/elbwalker/walkerOS/tree/main/packages/web/destinations/piwikpro/src"
  },
  "schemas": {
    "mapping": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "type": "object",
      "properties": {
        "goalId": {
          "type": "string",
          "description": "ID to count the event as a goal (like 1)"
        },
        "goalValue": {
          "type": "string",
          "description": "Property to be used as the goal value (like data.value)"
        }
      },
      "required": [
        "goalId"
      ],
      "additionalProperties": false
    },
    "settings": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "type": "object",
      "properties": {
        "appId": {
          "type": "string",
          "minLength": 1,
          "description": "ID of the Piwik PRO site (like XXX-XXX-XXX-XXX-XXX)"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "URL of your Piwik PRO account (like https://your_account_name.piwik.pro/)"
        },
        "linkTracking": {
          "default": false,
          "description": "Enables/Disables download and outlink tracking",
          "type": "boolean"
        }
      },
      "required": [
        "appId",
        "url"
      ],
      "additionalProperties": false
    }
  },
  "examples": {
    "env": {
      "init": {
        "window": {},
        "document": {
          "createElement": {
            "$code": "()=>({type:\"\",src:\"\",async:!1,defer:!1})"
          },
          "head": {
            "appendChild": {
              "$code": "()=>{}"
            }
          }
        }
      },
      "push": {
        "window": {
          "_paq": []
        },
        "document": {
          "createElement": {
            "$code": "()=>({type:\"\",src:\"\",async:!1,defer:!1})"
          },
          "head": {
            "appendChild": {
              "$code": "()=>{}"
            }
          }
        }
      },
      "simulation": [
        "call:window._paq.push"
      ]
    },
    "step": {
      "cartUpdate": {
        "title": "Cart update",
        "description": "A cart view fires Piwik PRO ecommerceCartUpdate with nested products, total value, and currency code.",
        "in": {
          "name": "cart view",
          "data": {
            "currency": "EUR",
            "value": 840
          },
          "context": {
            "shopping": [
              "cart",
              0
            ]
          },
          "globals": {
            "pagegroup": "shop"
          },
          "custom": {
            "completely": "random"
          },
          "user": {
            "id": "us3r",
            "device": "c00k13",
            "session": "s3ss10n"
          },
          "nested": [
            {
              "entity": "product",
              "data": {
                "id": "ers",
                "name": "Everyday Ruck Snack",
                "color": "black",
                "size": "l",
                "price": 420,
                "quantity": 2
              },
              "context": {
                "shopping": [
                  "cart",
                  0
                ]
              },
              "nested": []
            }
          ],
          "consent": {
            "functional": true
          },
          "id": "3860c33c2db9f177",
          "trigger": "load",
          "entity": "cart",
          "action": "view",
          "timestamp": 1700000303,
          "timing": 3.14,
          "source": {
            "count": 1,
            "trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
            "type": "collector",
            "schema": "4"
          }
        },
        "mapping": {
          "name": "ecommerceCartUpdate",
          "data": {
            "set": [
              {
                "loop": [
                  "nested",
                  {
                    "condition": {
                      "$code": "e=>g(e)&&\"product\"===e.entity"
                    },
                    "map": {
                      "sku": "data.id",
                      "name": "data.name",
                      "price": "data.price",
                      "quantity": {
                        "value": 1
                      },
                      "variant": {
                        "key": "data.color"
                      },
                      "customDimensions": {
                        "map": {
                          "1": "data.size"
                        }
                      }
                    }
                  }
                ]
              },
              "data.value",
              {
                "map": {
                  "currencyCode": {
                    "value": "EUR"
                  }
                }
              }
            ]
          }
        },
        "out": [
          [
            "ecommerceCartUpdate",
            [
              {
                "sku": "ers",
                "name": "Everyday Ruck Snack",
                "price": 420,
                "quantity": 1,
                "variant": "black",
                "customDimensions": {
                  "1": "l"
                }
              }
            ],
            840,
            {
              "currencyCode": "EUR"
            }
          ]
        ]
      },
      "customEvent": {
        "title": "Custom event with goal",
        "description": "A promotion visible event fires Piwik PRO trackEvent and then trackGoal to record a goal conversion.",
        "in": {
          "name": "promotion visible",
          "data": {
            "name": "Setting up tracking easily",
            "position": "hero"
          },
          "context": {
            "ab_test": [
              "engagement",
              0
            ]
          },
          "globals": {
            "pagegroup": "homepage"
          },
          "custom": {
            "completely": "random"
          },
          "user": {
            "id": "us3r",
            "device": "c00k13",
            "session": "s3ss10n"
          },
          "nested": [
            {
              "entity": "child",
              "data": {
                "is": "subordinated"
              }
            }
          ],
          "consent": {
            "functional": true
          },
          "id": "f3f1e6ca8499e579",
          "trigger": "visible",
          "entity": "promotion",
          "action": "visible",
          "timestamp": 1700000304,
          "timing": 3.14,
          "source": {
            "count": 1,
            "trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
            "type": "collector",
            "schema": "4"
          }
        },
        "mapping": {
          "name": "trackEvent",
          "settings": {
            "goalId": "goal_1"
          },
          "data": {
            "set": [
              "data.name",
              "data.position"
            ]
          }
        },
        "out": [
          [
            "trackEvent",
            "Setting up tracking easily",
            "hero"
          ],
          [
            "trackGoal",
            "goal_1",
            null
          ]
        ]
      },
      "ecommerceAddToCart": {
        "title": "Add to cart",
        "description": "A product add fires Piwik PRO ecommerceAddToCart with the added item and currency code.",
        "in": {
          "name": "product add",
          "data": {
            "id": "ers",
            "name": "Everyday Ruck Snack",
            "color": "black",
            "size": "l",
            "price": 420
          },
          "context": {
            "shopping": [
              "intent",
              0
            ]
          },
          "globals": {
            "pagegroup": "shop"
          },
          "custom": {
            "completely": "random"
          },
          "user": {
            "id": "us3r",
            "device": "c00k13",
            "session": "s3ss10n"
          },
          "nested": [],
          "consent": {
            "functional": true
          },
          "id": "eb4bb860abcf3f89",
          "trigger": "click",
          "entity": "product",
          "action": "add",
          "timestamp": 1700000301,
          "timing": 3.14,
          "source": {
            "count": 1,
            "trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
            "type": "collector",
            "schema": "4"
          }
        },
        "mapping": {
          "name": "ecommerceAddToCart",
          "data": {
            "set": [
              {
                "set": [
                  {
                    "map": {
                      "sku": "data.id",
                      "name": "data.name",
                      "price": "data.price",
                      "quantity": {
                        "value": 1
                      },
                      "variant": {
                        "key": "data.color"
                      },
                      "customDimensions": {
                        "map": {
                          "1": "data.size"
                        }
                      }
                    }
                  }
                ]
              },
              {
                "map": {
                  "currencyCode": {
                    "value": "EUR"
                  }
                }
              }
            ]
          }
        },
        "out": [
          [
            "ecommerceAddToCart",
            [
              {
                "sku": "ers",
                "name": "Everyday Ruck Snack",
                "price": 420,
                "quantity": 1,
                "variant": "black",
                "customDimensions": {
                  "1": "l"
                }
              }
            ],
            {
              "currencyCode": "EUR"
            }
          ]
        ]
      },
      "ecommerceOrder": {
        "title": "Ecommerce order",
        "description": "A completed order calls Piwik PRO ecommerceOrder with line items, order totals, and currency code.",
        "in": {
          "name": "order complete",
          "data": {
            "id": "0rd3r1d",
            "currency": "EUR",
            "shipping": 5.22,
            "taxes": 73.76,
            "total": 555
          },
          "context": {
            "shopping": [
              "complete",
              0
            ]
          },
          "globals": {
            "pagegroup": "shop"
          },
          "custom": {
            "completely": "random"
          },
          "user": {
            "id": "us3r",
            "device": "c00k13",
            "session": "s3ss10n"
          },
          "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": "681fb16c8ad52e59",
          "trigger": "load",
          "entity": "order",
          "action": "complete",
          "timestamp": 1700000300,
          "timing": 3.14,
          "source": {
            "count": 1,
            "trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
            "type": "collector",
            "schema": "4"
          }
        },
        "mapping": {
          "name": "ecommerceOrder",
          "data": {
            "set": [
              {
                "loop": [
                  "nested",
                  {
                    "condition": {
                      "$code": "e=>g(e)&&\"product\"===e.entity"
                    },
                    "map": {
                      "sku": "data.id",
                      "name": "data.name",
                      "price": "data.price",
                      "quantity": {
                        "value": 1
                      },
                      "variant": {
                        "key": "data.color"
                      },
                      "customDimensions": {
                        "map": {
                          "1": "data.size"
                        }
                      }
                    }
                  }
                ]
              },
              {
                "map": {
                  "orderId": "data.id",
                  "grandTotal": "data.total",
                  "tax": "data.taxes",
                  "shipping": "data.shipping"
                }
              },
              {
                "map": {
                  "currencyCode": {
                    "value": "EUR"
                  }
                }
              }
            ]
          }
        },
        "out": [
          [
            "ecommerceOrder",
            [
              {
                "sku": "ers",
                "name": "Everyday Ruck Snack",
                "price": 420,
                "quantity": 1,
                "variant": "black",
                "customDimensions": {
                  "1": "l"
                }
              },
              {
                "sku": "cc",
                "name": "Cool Cap",
                "price": 42,
                "quantity": 1,
                "customDimensions": {
                  "1": "one size"
                }
              }
            ],
            {
              "orderId": "0rd3r1d",
              "grandTotal": 555,
              "tax": 73.76,
              "shipping": 5.22
            },
            {
              "currencyCode": "EUR"
            }
          ]
        ]
      },
      "init": {
        "title": "Initialization",
        "description": "Destination bootstrap loads the Piwik PRO tracker and configures the tracker URL and app id.",
        "in": {
          "loadScript": true,
          "settings": {
            "appId": "XXX-XXX-XXX-XXX-XXX",
            "url": "https://your_account_name.piwik.pro/"
          }
        },
        "out": [
          [
            "_paq.push",
            [
              "setTrackerUrl",
              "https://your_account_name.piwik.pro/ppms.php"
            ]
          ],
          [
            "_paq.push",
            [
              "setSiteId",
              "XXX-XXX-XXX-XXX-XXX"
            ]
          ],
          [
            "_paq.push",
            [
              "enableLinkTracking"
            ]
          ]
        ]
      },
      "pageViewWithTitle": {
        "title": "Page view",
        "description": "A page view fires Piwik PRO trackPageView with the page title resolved from event data.",
        "in": {
          "name": "page view",
          "data": {
            "domain": "www.example.com",
            "title": "walkerOS documentation",
            "referrer": "https://www.walkeros.io/",
            "search": "?foo=bar",
            "hash": "#hash",
            "id": "/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": "1faebee819ed0448",
          "trigger": "load",
          "entity": "page",
          "action": "view",
          "timestamp": 1700000305,
          "timing": 3.14,
          "source": {
            "count": 1,
            "trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
            "type": "collector",
            "schema": "4"
          }
        },
        "mapping": {
          "data": "data.title"
        },
        "out": [
          [
            "trackPageView",
            "walkerOS documentation"
          ]
        ]
      },
      "productDetailView": {
        "title": "Product detail view",
        "description": "A product view fires Piwik PRO ecommerceProductDetailView with a single-item array and currency code.",
        "in": {
          "name": "product view",
          "data": {
            "id": "ers",
            "name": "Everyday Ruck Snack",
            "color": "black",
            "size": "l",
            "price": 420
          },
          "context": {
            "shopping": [
              "detail",
              0
            ]
          },
          "globals": {
            "pagegroup": "shop"
          },
          "custom": {
            "completely": "random"
          },
          "user": {
            "id": "us3r",
            "device": "c00k13",
            "session": "s3ss10n"
          },
          "nested": [],
          "consent": {
            "functional": true
          },
          "id": "53eb257ccbc9e920",
          "trigger": "load",
          "entity": "product",
          "action": "view",
          "timestamp": 1700000302,
          "timing": 3.14,
          "source": {
            "count": 1,
            "trace": "0a1b2c3d4e5f60718293a4b5c6d7e8f9",
            "type": "collector",
            "schema": "4"
          }
        },
        "mapping": {
          "name": "ecommerceProductDetailView",
          "data": {
            "set": [
              {
                "set": [
                  {
                    "map": {
                      "sku": "data.id",
                      "name": "data.name",
                      "price": "data.price",
                      "quantity": {
                        "value": 1
                      },
                      "variant": {
                        "key": "data.color"
                      },
                      "customDimensions": {
                        "map": {
                          "1": "data.size"
                        }
                      }
                    }
                  }
                ]
              },
              {
                "map": {
                  "currencyCode": {
                    "value": "EUR"
                  }
                }
              }
            ]
          }
        },
        "out": [
          [
            "ecommerceProductDetailView",
            [
              {
                "sku": "ers",
                "name": "Everyday Ruck Snack",
                "price": 420,
                "quantity": 1,
                "variant": "black",
                "customDimensions": {
                  "1": "l"
                }
              }
            ],
            {
              "currencyCode": "EUR"
            }
          ]
        ]
      }
    }
  }
}