Learn the core concepts and building blocks of Smile’s system.
In order to make reward programs simple to setup and effortless to maintain, Smile uses the basic model of “actions in, rewards out.” This means that all of the complexity of evaluating when, where, and how to issue rewards is handled internally by Smile. From a development perspective, the only thing you need to worry about is notifying Smile that the customer has performed an action.
In technical terms, customer actions are represented as Activities, and they’re created using the create an activity endpoint. Smile supports a variety of native activity types (like orders, social sharing, birthdays, and more), and additional custom activity types can be defined to enable rewarding for any action.Native activity types sync automatically into Smile, requiring no custom development. Only custom activity types require explicit definition and for you to use the create an activity endpoint.
When a new activity is created in Smile, it’s processed asynchronously against the account’s configured ways to earn (a.k.a. “earning/activity rules”). These rules are setup via Smile’s reward program management UI, Smile Admin. If a matching rule is found and the customer and activity meet all of the rewarding criteria, Smile will generate a Reward Fulfillment. The fulfillment represents Smile’s attempt to issue a reward to the customer. At this time, the only type of reward that can be issued when a customer performs an action are points.When a customer earns points, a Points Transaction record is created, and the points balance field on the Customer object is updated.
When they have accumulated enough points, customers can exchange their points for a reward (e.g. a discount coupon for their next order). The available redeeming options are modelled as Points Products, and are configured by the merchant in Smile Admin. Redemption can occur via any of Smile’s native UI components (like Smile UI or Shopify Checkout Extensions), by using the JavaScript SDK, or with the purchase a points product endpoint.