Collections
Collections are the core content organization tool on the GetintheLoop Platform. Collections create a "smart group" of businesses or offers that match the Content Filters configured for the Collection.
Collections allow you to group content together dynamically, to:
- Group specific offers by business category, such as Food + Drink, Home + Auto, etc.
- Group businesses based on geographic regions, like a shopping centre or arena
- Create entirely custom groupings with tags and age-based filters
Creating a Collection
A new Collection should be created any time you want to have a stable, queryable source for a specific content filter or grouping of content.
When creating a Collection, you will need to consider: Name & Appearance, Discoverability, Content Filters, and Ordering.
Name & Appearance
The core properties of a collection are the names, images, icons, and ordering associated with the collection.
Name | Full name of the Collection. |
Short Name | A short name for use in condensed-display situations. |
Slug | Human readable unique ID containing letters and hyphens. Generally based on the name. |
Priority | Allows collections to be ordered when queried in list from the API. Higher numbers are returned first. |
Images & Icons
A collection allows a couple images to be saved. These are used in the pre-built Collection List and Collection Details screens provided by the GetintheLoop SDKs.
They can also be used by custom integration layouts.
Hero Image | A brand or action image used in pre-built collection header views. |
Icon (Large / Small) | A square icon for the collection, used in list or grid formats. |
Discoverability
Discoverability means whether a Collection is currently findable via search or listing features of the platform. Discoverability of Collections can be limited by a date / time schedule and by geographic regions.
For example, a particular collection can be made discoverable only on weekends, or only in specific cities.
It's important to understand that discoverability settings are considered only when loading lists of Collections from the platform. If you are loading the content of a Collection directly by the Collection's id
, the visibility of the content will be unaffected by the Collection's discoverability settings.
Content Filters
A Collection's content is defined by its Content Filters. Filters are constructed out of a series of Conditions, which define what content is to be allowed or restricted.
Content Filters are applied in 2 steps:
- Business filters are applied to reduce the overall businesses applicable.
- Offer filters are applied to restrict the specific offers from the remaining businesses.
Filter conditions are added by clicking the + Add Conditions
button in the appropriate section. Multiple Conditions can be added, and their boolean logic can be specified using the AND
/ OR
controls.
The following describes the specific filters available.
Business Content Filters
Feature Plan | The Plan the business has. Used to create filters for specific levels of business customers. |
Category | Require or limit specific business categories. |
Business Tag | Tag on the business. Allows custom groupings by tag. |
Offer Tag | A tag on any of the businesses live offers. When applied at this level, it includes any of the businesses offers. |
Offer Content Filters
Offer Flags | Filter for specific offer flags such as Limited, Exclusive, or Punch Card. |
Offer Tags | Filter by a tag on offers. Allows for very custom filter scenarios. |
Location Tags | Checks if any locations of the available offer have a sepecific tag. |
Business Tags | Filter by Business Tags. Allows for reverse cases like excluding business categories but allowing specific offers based on business tag. |
Live For | How long the offer has been live for. Akin to offer age. |
Expires In | How long until the offer expires. |
Category | Filter by business category. |
Ordering
The default order of the businesses and offers returned from the Collection is controlled by the Collection ordering settings.
There are 3 pre-set orderings available: Distance, Offer Age, and Random. In addition it is possible to specify custom ordering settings.
Custom Ordering
Content ordering is based on generating a weighted score for each offer. This score is used to order the businesses and offers returned.
Custom Ordering is an advanced feature. Please make sure you understand the implications of changes before editing any of specific field settings.
Custom ordering allows individual order weighting configurations to be specified for each of the available scoring parameters:
- Distance - in meters
- Offer Age - in seconds
- Business Age - in seconds
- Featured - boolean
- Limited - boolean
- Exclusive - boolean
- Randomization - float, 0.0 to 1.0
Defining A Custom Score
The format of each field is a JSON array, that includes a sub-array for each value + score pair, based on the parameter type of the field.
A field can be a boolean or it can represent a continuous value.
Boolean Values
For boolean fields such as Featured or Exclusive, the JSON object should specify 2 distinct states: the true state and the false state.
[
// ordering is "value" and "weight"
[ 0, 0 ],
[ 1, 50 ]
]
The above example adds 0
points for false
, and 50
points when true
. When applied to a specific field, such as Featured
, it would add 50 points to the score of any offer that has the flag featured
.
Continuous Values
Fields that represent continuous values such as Distance or Age can be scored by simple Linear Interpolation between 2 scores, or they can have the score based on a Value Bucketing approach.
Linear Interpolation
[
[ 0, 10 ],
[ 10000, 0 ]
]
The above example would be applied consistently to all values, from 0 to 10000, with the appropriate score between 10 and 0 for each value.
For example, if set to the Distance
field, locations 0 meters away would be scored 10, around 5000m away scored 5 and 10,000m or greater scored 0. Any distance between 0 and 10,000m would receive the appropriate fraction of a score out of 10.
Value Bucketing
Scores can also be organized into discreet buckets. The key here is to have 2 entries for each value so that the internal scoring algorithm knows not to interpolate the scores.
For example, take the following score applied to Offer Age
:
[
[0, 0],
[0, 10],
[86400, 10],
[86400, 7],
[259200, 7],
[259200, 3],
[604800, 3],
[604800, 0],
]
This would create 4 buckets:
- 0 - 86,400 seconds old (<= 1 day)
- 86,400s - 259,200s old (1 - 3 days)
- 259,200s - 604,800s old (3-7 days)
- > 604,800s old (> 7 days)
These would receive the following weights:
- <= 1 day: 10 point
- 1-3 days: 7 point
- 3-7 days: 3 points
- > 7 days: 0 points