The Campaign Object
A Campaign on Usher can be represented as a JSON Object.
Pieces of the object are distributed across different storage mechanisms to deliver on the immutability of Campaign Terms but mutability of Campaign Details and Brand/Advertiser Profile.
Once fully processed, a Campaign in its raw form, looks like this:
{
"id": "ida4Pebl2uULdI_rN8waEw65mVH9uIFTY1JyeZt1PBM",
"chain": "arweave",
"owner": "ksFTLgrwQGtNrhRz6MWyd3a4lvK1Oh-QF1HYcEeeFVk",
"events": [
{
"strategy": "flat",
"rate": 0.1,
"nativeLimit": 250000,
"perCommit": 1,
"description": "files are uploaded"
}
],
"reward": {
"name": "Arweave",
"ticker": "AR",
"type": "token",
"limit": 3000
},
"conflict_strategy": "PASSTHROUGH",
"details": {
"destination_url": "https://app.ardrive.io/#/sign-in?ref=usher",
"name": "ArDrive Referral Program",
"description": "Refer users to ArDrive and earn when files are uploaded.",
"image": "https://ardrive.io/wp-content/uploads/2021/07/Gallery-Angle-PS3000-scaled.jpg",
"external_link": "https://ardrive.io/"
},
"advertiser": {
"name": "ArDrive",
"icon": "https://ardrive.io/wp-content/uploads/2021/06/AD-LOGO-PS1600-210x79.png",
"description": "Upload files forever!",
"external_link": "https://ardrive.io/",
"twitter": "https://twitter.com/ardriveapp"
},
"disable_verification": false,
"unlisted": false,
"whitelist": null
}
All properties within the Campaign Object except for
details
and advertiser
are stored immutably on the compute blockchain that the Brand decides to conduct the Partnership Program on.details
and advertiser
are stored on the Ceramic Network, where data is mutable and write-access is owned by the Brand.Object Property Name/Key | Type | Description |
---|---|---|
id | string | The identifier of the Campaign. This can be an ID within a Smart Contract or an Blockchain Transaction Address, depending on the chain |
chain | string | The blockchain identifer. ie. arweave , ethereum , polygon |
owner | string | The Wallet Address of the Brand/Advertiser |
events | array | An array of Conversion Events. These Events represent points throughout the Referred User journey at which Conversions are Tracked |
events[].strategy | string | flat or percentage reward strategy for the event |
events[].rate | float | Reward rate for the event.
For the flat strategy, this rate is flat amount of tokens rewarded to partners.
For the percentage strategy, this rate is a multiplier, multiplied by the metadata.amount submitted in the Conversion Parameter |
events[].nativeLimit | integer | An arbitrary value that limits the conversions that can be processed for this given event for the referred/native user.
Where a Conversion.nativeId is provided, rather than restricting conversions to 1 per referred/native user, the Referred User can continue triggering conversions until the sum of all Conversion.commit values meets this nativeLimit |
events[].perCommit | integer | If no reward perCommit is defined, the behaviour is standard (ie. X reward rate per Conversion).
Otherwise, the reward amount can be relative to the Conversion.commit value, such that
reward = rate * (commit / perCommit) |
events[].description | string | A description for when the event will trigger.
The word "when" is prepended to this description in the Usher Partner App UI |
reward.name | string | The name of the rewarded token.
ie. "Ether", "Arweave", "My Cool NFT" |
reward.ticker | string | The ticker for the rewarded token.
ie. "ETH", "AR", "MYCNFT" |
reward.type | string | The type of the token rewared to Partners.
This is an enumerator with values: token , nft , or pst |
reward.limit | integer | A limit on the rewards for the entire campaign. When the amount of claimed rewards reaches this limit, the Campaign is considered complete. |
conflict_strategy | string | PASSTHROUGH or OVERWRITE
Determines how the referral should behave when two Partners refer the same user prior to a tracked conversion.
PASSTHROUGH is default, and ensures that the first Invite Link used takes precedence.
OVERWRITE is optional and ensures that the last Invite Link used takes precedence. |
details.destination_url | string | The URL that Campaign Partners will redirect users to. |
details.name | string | Name for the Campaign to be recognisable by Partners |
details.description | string | A description for the Campaign detailing when and how users are converted once the destination_url is reached |
details.image | string | A hosted image URL to further enhance recognisability of the Campaign |
details.external_link | string | A URL Partners can visit to receive more information about the Campaign. Can be a landing page promoting the partnership program |
advertiser.name | string | Name of the Advertiser |
advertiser.icon | string | A hosted image URL of the Advertiser's Brand Icon |
advertiser.description | string | A description of the Advertiser and their related services or propositions |
advertiser.external_link | string | A URL that Partners can visit to learn more about the Advertiser |
advertiser.twitter | string | A Twitter URL that Partners can visit to learn more and get updates from the Advertiser |
disable_verification | boolean | If true , Personhood Verification will NOT be required for Partners to start referring users and earning rewards.
Personhood Verification is generally recommended to be active for Campaigns.
Learn more on whether your Campaign should include this security measure. |
unlisted | boolean | Determines whether the Campaign will show on the Usher Explore Page.
Partnership Programs that wish to remain private, and/or include a Whitelist of Partners can opt to set this to true |
whitelist.partners | string[] | An array of Partner Identifiers.
By default, Campaigns will not include the Whitelist feature. |
whitelist.external_link | string | A URL where a Form or other form of data collection is hosted. Partners can use this URL to submit their application to participate in the Partner program. |