Available Events

The full list of events Raisely can notify you about via our webhooks.

Donation Events

EventDescription
donation.createdFired when a donation is created and ready to be charged, or when an offline donation is added.
donation.succeededWhen an online donation is successfully charged. There's no guarantee this is sent after the donation.created event.
donation.updatedOn donation updates, normally when the email is updated in the process of re-sending a receipt.
donation.refundedWhen a donation is refunded, either in part or full
donation.deletedWhen an offline donation is deleted.

All donation events will have the following payload:

{
  "secret": "",
  "data": {
    "type": "donation.created|succeeded|updated|deleted",
    "uuid": "79d37040-c333-11e7-8f3c-c766ac08c846",
    "createdAt": "2017-11-13T03:33:55.142Z",
    "source": "campaign:916fdb80-c82d-11e7-8f3c-c766ac08c846",
    "context": {
      "referrer": "google.com",
      "userAgent": "...",
      "pathname": "/my-example-page",
      "utmSource": "example"
    },
    "data": {
      "uuid": "13540340-0fcf-11e8-bfb9-e1688dd03f70",
      "type": "ONLINE", // ONLINE or OFFLINE
      "method": "CREDIT_CARD", // CREDIT_CARD, APPLE_PAY, IDEAL
      "currency": "AUD",
      "message": "My message here",
      "anonymous": false,
      "amount": 3000, // Donation amount (ex Raisely fee) in cents
      "createdAt": "2018-02-12T08:31:09.470Z",
      "mode": "TEST", // TEST or LIVE
      "public": {},
      "status": "OK",
      "email": "[email protected]",
      "id": 264651,
      "card": "card_1BuciQC5KzEzHPNhDf05NcJu", // Gateway card ID
      "customer": "cus_CJFC7o5r2ekWrF", // Gateway customer ID
      "processing": "ONCE", // ONCE or RECURRING if it's part of a subscription
      "fee": 130, // Raisely fee if charged
      "total": 3130, // Total including Raisely fee
      "private": null,
      "result": {}, // Gateway charge object (see Stripe docs)
      "userId": 398243,
      "gst": 0, // GST charged by Raisely on this transaction (AU accounts only)
      "campaignUuid": "raisely-pk-8c047df67a79692b5eb4e0afccee9b06", // raisely key for legacy campaigns, uuid for new campaigns
      "userUuid": "135effc0-0fcf-11e8-bfb9-e1688dd03f70",
      "subscriptionUuid": "144effc0-0f7d-11e8-hdh7-h37364dd04f766", // if this is part of a subscription, the subscription uuid will be provided.
      "user": {
        "uuid": "135effc0-0fcf-11e8-bfb9-e1688dd03f70",
        "createdAt": "2018-02-12T08:31:09.245Z",
        "updatedAt": "2018-02-12T08:31:09.245Z",
        "facebookId": null,
        "email": "[email protected]",
        "username": "[email protected]",
        "permission": "PARTICIPANT",
        "address1": null,
        "address2": null,
        "postcode": null,
        "state": null,
        "suburb": null,
        "country": null,
        "internal": {},
        "public": null,
        "private": null,
        "firstName": "Tom",
        "lastName": "Maitland",
        "photoUrl": null,
        "phoneNumber": null,
        "ipNumber": null,
        "ipLatitude": null,
        "ipLongitude": null,
        "ipCity": null,
        "ipCountry": null
      },
      "firstName": "Tom",
      "lastName": "Maitland",
      "campaignFee": 0, // raisely fee in campaign currency
      "campaignAmount": 0, // donation amount in campaign currency
      "providerRaisely": 0, // raisely fee in AUD
      "cardPreview": 4242, // last4 digits of the card
      "feeOptIn": true,
      "publicAmount": 30,
      "publicFee": 1.3,
      "publicTotal": null
    }
  }
}

Subscription Events

Subscriptions are the system name for regular giving in Raisely, they control the schedules for any recurring payments.

EventDescription
subscription.createdWhen a new subscription has been created for processing.
subscription.succeededWhen the first donation of a subscription has been successfully charged.
subscription.updatedWhen any change is made to a subscription.
subscription.failingWhen an attempt to rebill a subscription is failing. This is sent every time the subscription is retried up until the final retry which will trigger a subscription.failed event
subscription.failedCharging a subscription has encountered a permanent error (eg the card has been cancelled), or has exceeded the maximum retries for a temporary error (eg insufficient funds)
subscription.rebilledEvery subsequent donation made on the subscription following the first donation.
subscription.pausedWhen a subscription is paused
subscription.resumedWhen a subscription is resumed after being paused
subscription.cancelledWhen a subscription's status is updated to "CANCELLED"
subscription.deletedOn the deletion of a subscription. This happens rarely, they're normally updated to a status of "CANCELLED".

All subscription events will have the following payload:

{
  "secret": "",
  "data": {
    "type": "subscription.created|succeeded|updated|deleted",
    "uuid": "79d37040-c333-11e7-8f3c-c766ac08c846",
    "createdAt": "2017-11-13T03:33:55.142Z",
    "source": "campaign:916fdb80-c82d-11e7-8f3c-c766ac08c846",
     "context": {
      "referrer": "google.com",
      "userAgent": "...",
      "pathname": "/my-example-page",
      "utmSource": "example"
    },
    "data": {
      "uuid": "302a8fb0-0fd0-11e8-bfb9-e1688dd03f70",
      "createdAt": "2018-02-12T08:39:07.052Z",
      "updatedAt": "2018-02-12T08:39:10.916Z",
      "user": {
        "uuid": "135effc0-0fcf-11e8-bfb9-e1688dd03f70",
        "createdAt": "2018-02-12T08:31:09.245Z",
        "updatedAt": "2018-02-12T08:31:09.245Z",
        "facebookId": null,
        "email": "[email protected]",
        "username": "[email protected]",
        "permission": "PARTICIPANT",
        "address1": null,
        "address2": null,
        "postcode": null,
        "state": null,
        "suburb": null,
        "country": null,
        "internal": {},
        "public": null,
        "private": null,
        "firstName": "Tom",
        "lastName": "Maitland",
        "photoUrl": null,
        "phoneNumber": null,
        "ipNumber": null,
        "ipLatitude": null,
        "ipLongitude": null,
        "ipCity": null,
        "ipCountry": null
      },
      "card": "card_1Bucq7C5KzEzHPNhw0ZhT1Gd", // gateway card ID
      "status": "OK", // OK, RETRYING, FAILING, FAILED, PAUSED, CANCELLED
      "amount": 3000, // subscription amount in cents
      "total": 3130, // total charge including Raisely fee in cents
      "fee": 130, // raisely fee component in cents
      "count": 1, // count of the interval, ie. 2 WEEK(s) or 1 MONTH
      "interval": "WEEK", // interval to bill in
      "currency": "AUD",
      "nextPayment": "2018-02-19T08:39:07.000Z", // when the next payment is due, this can be in the past if the subscription is failing
      "public": {},
      "failedAt": null, // an ISO8601 datestamp of the last failure
      "message": "",
      "failed": 0, // number of failed donations since the last successful one
      "private": {},
      "error": "",
      "anonymous": false,
      "mode": "TEST", // TEST or LIVE
      "campaignUuid": "raisely-pk-8c047df67a79692b5eb4e0afccee9b06",
      "feeOptIn": true
    }
  }
}

📘

About subscriptions and donations

When someone signs up to a new subscription you will receive 4-5 events (provided you're subscribed to them all). You'll get subscription.created, donation.created, subscription.succeeded, donation.succeeded and maybe user.created if the donation was for a new user. We don't guarantee the order you receive them in, so your application needs to handle them appropriately.

User Events

Users (people) are shared across your Raisely organisation, shared between your campaigns. They can create and own profiles, donations, subscriptions and posts.

EventDescription
user.createdA new user has signed up, or been created automatically from a donation.
user.updatedA user has been updated.

All user events will have the following payload:

{
  "secret": "",
  "data": {
    "type": "user.created|updated",
    "uuid": "79d37040-c333-11e7-8f3c-c766ac08c846",
    "createdAt": "2017-11-13T03:33:55.142Z",
    "source": "campaign:916fdb80-c82d-11e7-8f3c-c766ac08c846",
    "context": {
      "referrer": "google.com",
      "userAgent": "...",
      "pathname": "/my-example-page",
      "utmSource": "example"
    },
    "data": {
      "uuid": "cf64f3e0-0fe4-11e8-bfb9-e1688dd03f70",
      "createdAt": "2018-02-12T11:06:44.127Z",
      "updatedAt": "2018-02-12T11:06:44.127Z",
      "facebookId": null, // will be the facebook user ID when connected
      "email": "[email protected]",
      "username": "[email protected]",
      "permission": "PARTICIPANT",
      "address1": null,
      "address2": null,
      "postcode": null,
      "state": null,
      "suburb": null,
      "country": null,
      "internal": {},
      "public": null,
      "private": {},
      "organisationUuid": "7eb06c50-404f-11e7-bde7-06facaa3db7b",
      "organisation": {
        "uuid": "7eb06c50-404f-11e7-bde7-06facaa3db7b",
        "name": "Raisely",
        "public": null,
        "createdAt": "2017-02-07T06:04:57.110Z",
        "updatedAt": "2017-02-07T06:04:57.110Z",
        "private": null,
        "internal": {}
      },
      "firstName": "Tom",
      "lastName": "Maitland",
      "photoUrl": null,
      "phoneNumber": null,
      "ipNumber": "1.136.105.25",
      "ipLatitude": -37.0000, // estimated from IP
      "ipLongitude": 145.0000, // estimated from IP
      "ipCity": "Malvern",
      "ipCountry": "AU"
    }
  }
}

Profile Events

Profiles are the fundraising pages in a campaign. They're owned by users and can have hierarchy (parent and child profiles).

EventDescription
profile.createdWhen a new profile has been created
profile.updatedWhen a profile is updated, including joining/leaving a parent profile (look for the parentUuid) or moving between users.
profile.deletedWhen a profile is deleted and taken offline.
profile.totalUpdatedFired when the total of a profile is updated (in either direction).
profile.exerciseTotalUpdatedFired when the exercise total of a profile is updated (in either direction)
This can fire when one or both of exerciseTotalTime or exerciseTotal is updated.
profile.memberAddedWhen a team or organisation gets a new profile. (The new profile could be an individual or team)
profile.joinedTeamWhen a profile has a new parent
profile.memberRemovedWhen a child profile profile has a new member removed from the team
profile.leftTeamWhen a profile leaves it's current parent
badge.awardedWhen a badge is added to a profile
badge.revokedWhen a badge is removed from a profile

📘

When is a team not a team?

In the above webhooks joinedTeam and leftTeam , "team" refers to the parent profile.

With the new support for organisation profiles this means these webhooks could also refer to joining or leaving an organisation, to avoid disruption to existing users, we have not changed the name of the webhooks.

🚧

Webhooks and Profile Hierarchy

The webhooks for memberAdded, memberRemoved, leftTeam, joinedTeam are only sent for the specific point of change in the hierarchy. It's up to receivers of these webhooks to infer how these impact profiles further from the point of change.

For example, say you have the following profiles:
Samira (Individual Profile) is a member of Team Basketball, which is a member of Avondale School.
Samira's profile get's moved to Team Hockey, which is a member of Broadmeadow School

The following webhooks will be sent (containing the following profiles)
profile.memberRemoved: Team Basketball
profile.leftTeam: Samira
profile.memberAdded: Team Hockey
profile.joinedTeam: Samira

No other webhooks will be sent for this action.

All profile events will have the following payload:

{
  "secret": "",
  "data": {
    "type": "profile.created|updated|deleted",
    "uuid": "79d37040-c333-11e7-8f3c-c766ac08c846",
    "createdAt": "2017-11-13T03:33:55.142Z",
    "source": "campaign:916fdb80-c82d-11e7-8f3c-c766ac08c846",
     "context": {
      "referrer": "google.com",
      "userAgent": "...",
      "pathname": "/my-example-page",
      "utmSource": "example"
    },
    "data": {
      "uuid": "af6a3220-0fe5-11e8-bfb9-e1688dd03f70",
      "path": "tommaitland",
      "name": "Tom Maitland",
      "currency": "AUD",
      "goal": 35000, // fundraising goal in cents
      "status": "ACTIVE", // ACTIVE or DELETED
      "type": "INDIVIDUAL", // INDIVIDUAL or GROUP
      "description": "I'm fundraising with Hop for Hope to raise money for Global Cause.",
      "createdAt": "2018-02-12T11:12:59.971Z",
      "updatedAt": "2018-02-12T11:12:59.971Z",
      "public": {
        "demo_field": "My custom field"
      },
      "internal": {},
      "private": null,
      "campaignUuid": "raisely-pk-8c047df67a79692b5eb4e0afccee9b06",
      "userUuid": "cf64f3e0-0fe4-11e8-bfb9-e1688dd03f70",
      "user": {
        "uuid": "cf64f3e0-0fe4-11e8-bfb9-e1688dd03f70",
        "createdAt": "2018-02-12T11:06:44.127Z",
        "updatedAt": "2018-02-12T11:06:44.127Z",
        "facebookId": null,
        "email": "[email protected]",
        "username": "[email protected]",
        "permission": "PARTICIPANT",
        "address1": null,
        "address2": null,
        "postcode": null,
        "state": null,
        "suburb": null,
        "country": null,
        "internal": {},
        "public": null,
        "private": {
          "parentId": ""
        },
        "firstName": "Tom",
        "lastName": "Maitland",
        "photoUrl": null,
        "phoneNumber": null,
        "ipNumber": "1.136.105.25",
        "ipLatitude": -37.0000,
        "ipLongitude": 145.0000,
        "ipCity": "Malvern",
        "ipCountry": "AU"
      },
      "photoUrl": "",
      "total": 10000,
      "exerciseTotal": 6450,
      "exerciseTotalTime": 320,
        
      // Present for totalUpdated events
      "lastTotal": 80000,
      "totalPercent": 29,
      "lastTotalPercent": 26,
        
      // Present for exerciseTotalUpdated events
      "lastExerciseTotal": 6200,
      "lastExerciseTotalTime": 303
    }
  }
}

Post Events

Raisely can inform your application when a user posts or updates a blog post on their profile.

EventDescription
post.createdA new blog post was created
post.updatedA blog post was updated
post.deletedA blog post was deleted

All post events will have the following payload:

{
  "secret": "",
  "data": {
    "type": "post.created|updated",
    "uuid": "79d37040-c333-11e7-8f3c-c766ac08c846",
    "createdAt": "2017-11-13T03:33:55.142Z",
    "source": "campaign:916fdb80-c82d-11e7-8f3c-c766ac08c846",
    "data": {
      "uuid": "dbfc1770-0fec-11e8-876b-e7d833a53aa0",
      "title": null,
      "body": "My blogpost here",
      "path": "some-nice-path",
      "createdAt": "2018-02-12T12:04:21.223Z",
      "updatedAt": "2018-02-12T12:04:21.223Z",
      "userUuid": "cf64f3e0-0fe4-11e8-bfb9-e1688dd03f70",
      "photoUrl": null
    }
  }
}