Resonance Documentation
A brief survey of the Resonance platform
Resonance provides three core APIs, and a couple of common building blocks, to get you making offers and running referral campaigns in no time. There is also a web console to allow marketers or other folks to create, launch, and track new offers and referrals without any code or engineering time.
The three APIs are:
and the common building blocks are:
- Rewards
- Conditions
At a high level, an offer is simply a reward with a condition, and a referral is two rewards (one for the sender and one for the recipient) with one condition that the recipient must satisfy. These rewards and conditions are entirely configurable, and can be mixed and matched to create new offer and referral variants easily in the Resonance console.
Underlying it all is the concept of an event. Events can be thought of as actions that users take in your application. Whenever a notable action occurs (such as signing up, completing onboarding, or making a purchase), your system should emit an event to Resonance using the Events API.
Events are powerful and important because with them, you can create conditions. For example, a simple but common condition might be that a user needs to finish onboarding. By firing an event when that occurs, Resonance can track which users have finished onboarding and have therefore satisfied the condition. If that user had an active offer with that condition, then Resonance would know that that user had earned their reward. At that point, Resonance notifies your system via a webhook that a reward is ready to be issued.
Since rewards are created by you, the client, Resonance does not handle reward fulfillment. Resonance instead notifies you via a webhook when a reward is ready to be fulfilled. Resonance also has an API endpoint that allows you to get a list of all the rewards that are ready to go out to users, so you can use that instead of webhooks if that's preferred. Reward fulfillment should then be handled on your end.
As for conditions, while our example was simple and basically amounted to "a user emits this event", conditions can be much more complex. Here are a few examples:
- user emits event A AND event B
- user emits event A OR event B
- user emits an event X number of times
- user emits (event A twice OR event B once) AND event C is not emitted
Conditions can also be used when making offers to users. While there are ways to directly make
offers using the Offers API, or through an offer code, or manually in the console,
Resonance can also dynamically make offers to users who satisfy conditions that you define. For
instance, let's say you're firing two events called User Signed Up
and
User Activated
, and you've made conditions using those events. Let's also say you
want to reward every user who activates on your platform by giving them $5. You could create an
offer with a $5 reward and the
User Activated
condition, and then you could configure the offer to be made dynamically to users as soon as they emit
that User Signed Up
event. Resonance would then be able to completely manage the offer
through its whole lifecycle using conditions, rather than waiting for requests via the Offers API.
Referrals, on the other hand, do not allow dynamic entry with a condition. Referrals can be created with a direct API call, or manually in the console (which is just making an API call behind the scenes), or by submitting a referral sender's referral code. In some sense, that last option—entering a referral code—is the only valid condition for entering a user into a referral. It doesn't make sense to simply create a referral when a user signs up, the way that it might make sense for an offer, since a referral by nature requires that the user was referred.
Conditions can still be used for referral senders however. Even though recipients must provide a
referral code or be entered explicitly via the API, senders can dynamically change the referral
offer they're making by satisfying conditions. This is part of Resonance's referral campaign
system. Let's say you wanted to run a limited time referral campaign that awarded senders double the
amount they'd normally receive. And let's say you only wanted this to be available to users who had
made a purchase in your app. Well, by creating a condition on something like a
Purchase Completed
event, you could have senders who met the condition receive this enhanced
referral offer for a time. Recipients would still enter the referral by putting in the sender's referral
code like normal.
Next steps
Thanks for reading this survey of the platform! It's a lot to take in all at once, but it will (hopefully) make more sense once you get hands on with the APIs, and get into the console and start creating. Please take a look at the guides linked below to get started! They're designed to go in order, and will build on each other as they go. Each one will explain the thought processes that should be going on at each step, along with examples and links to more extensive documentation of the concepts at hand.