Savannah CRM

Documentation for Savannah CRM

View project on GitHub

Webhooks

WARNING: Webhooks are a beta feature and subject to change. To start using them contact info@savannahhq.com

Webhooks allow you to send data to an external system whenever something changes within Savannah.

Events

Every event is given a heirarchical name that identifies the reason for the event and the data that will be associated with it.

When subscribing to events you can subscribe to the full event name (such as Member.changed) or all events in a heirarchy (such as Member.*).

Member

Member events are triggered whenever a Member profile is created, modified, or deleted. The event name will be Member.created, Member.changed or Member.deleted respectively.

The payload for this event will always be the Member’s profile data:

{
    "event": {
        "id": "0b221da1-89b8-4b17-95dd-bdd91398a364", 
        "hook": "3350fc24-ebb4-4d27-a9e4-2ca33994b092", 
        "name": "Member.updated", 
        "target": "https://yourhostname.com/webhook_handler", 
        "signature": "3zEgRNAs/KsbPP1VrVUhZwCWBvntmMGVtgKDYGYZXKU="
    }, 
    "data": {
        "id": 19413, 
        "name": "Example User", 
        "email": "example@test.com", 
        "role": "Community", 
        "company": "Faceless Corp", 
        "tags": ["customer", "ambassador"]
    }
}

EngagementLevel

EngagementLevel events are triggered whenever a Member’s engagement level changes is a project. Event names will be either EngagementLevel.up or EngagementLevel.down depending on whether there has been an increase or decrease in the member’s engagement level in that project.

The payload for this event will contain the project, new and previous levels:

{
    "event": {
        "id": "29011008-b537-4951-a84c-b4f9c3d1ce4c", 
        "hook": "38cc41fa-9863-426a-afcc-117d26dc6d7c", 
        "name": "EngagementLevel.up", 
        "target": "https://yourhostname.com/webhook_handler", 
        "signature": "W+A7enQIGBAJ013a9yMf49OTxuWcHJoNjQaE6OIpFck="
    }, 
    "data": {
        "project": {
            "id": 45, 
            "name": "Telegraf", 
            "default_project": false
        }, 
        "member": {
            "id": 19413, 
            "name": "Example User", 
            "email": "example@test.com", 
            "role": "Community", 
            "company": "Faceless Corp", 
            "tags": ["customer", "ambassador"]
        }, 
        "level": "Contributor", 
        "previously": "Participant"
    }
}

Authentication

You can verify that an event is coming from Savannah CRM using the signature data provided in every webhook call.

The signature an HMAC digest of the data portion of the JSON payload, encoded as a string, and your webhook’s secret key.