{
  // We have 2 models one is a "customer", another is an "organization".
  "models": [{ "name": "organization" }, { "name": "customer" }],
  "funnels": [
    // this funnel triggers everytime we call `/identify` an "organization".
    // it will send a message to the shared slack connect channel and also
    // make a http request to zapier
    {
      "id": "identify",
      // it will only trigger for an organization
      "forModels": "organization",
      "steps": {
        // this is a special event that is fired when `/identify` is called
        "event": "onFunctionaryIdentify",
        "actions": [
          // this tells functionary to message slack connect channel with our customer.
          // note liquid templating. see action section for more details
          {
            "type": "slack",
            "args": {
              "method": "message",
              "channel": "{{ modelProperties.customerSupportSlackConnectChannel }}",
              "content": "{{ displayName }} was just identified."
            }
          },
          // this tells functionary to make a http call
          // note liquid templating. see action section for more details
          {
            "type": "webhook",
            "args": {
              "method": "POST",
              "url": "zapier.com/startZap/{{modelProperties.id}}"
            }
          }
        ]
      }
    },
    // this funnel mocks a onboarding process for a customer.
    // For each customer, it will trigger the events in the actions for
    // each step.
    {
      "id": "onboarding_funnel",
      "forModels": "customer",
      "steps": [
        { "event": "signed_up" },
        { "event": "completed_profile" },
        // after a user has complete their profile, the
        // FIRST TIME a user starts a stream functionary will
        // send a message with the displayname to sales funnel
        {
          "event": "started_stream",
          "actions": [
            {
              "type": "slack",
              "args": {
                "method": "message",
                "channel": "sales-funnel",
                "content": "{{ displayName }} started their first stream"
              }
            }
          ]
        },
        // When a user has their first attendee in a stream, this will message the
        // sales-funnel slack channel with a the attendee name and the fullstory
        // link to watch the user session.  It will also send an http request.
        {
          "event": "had_first_attendee",
          "actions": [
            {
              "type": "slack",
              "args": {
                "method": "message",
                "channel": "sales-funnel",
                "content": "{{eventProperties.attendeeName}} was the first attendee for {{modelProperties.id}} \
                fullstory link -> fullstory.com/{{eventProperties.hostedroomname}} "
              }
            },
            {
              "type": "webhook",
              "args": { "method": "GET", "url": "http://anockableURL.com" }
            }
          ]
        }
      ]
    }
  ]
}