Once Off Message Campaign

Communicate with your audience through once off message campaigns.

Before you begin

Create and send a once-off message campaign to engage your audience. You can engage a specific group of holders of digital passports thanks to tags or digital passport identification number(s).

β›”

Limitations

Digital passport owners cannot reply to your once message campaigns.

Let's start πŸš€

Create Once Off Message Campaign

Step 1: Create your once-off message campaign draft respecting the Message Schema by using the /onceOfMessage.

πŸ“Œ

The API is authenticated with the user rights required β†’ certCreate

Target your audience owning digital passports associated with at least one defined tag

{
    "campaignName": "New Arianeer",
    "tagRule": "or",
  	"isWalletActiveSinceNumberOfDays": null,
    "uniqueOwner": true,
    "tags": ["dropJan23","dropFeb23"], // Target tags
    "content": "{\"$schema\":\"https://cert.arianee.org/version1/ArianeeMessage-i18n.json\",\"language\":\"en-US\",\"i18n\":[{\"language\":\"en-US\",\"title\":\"Hello Arianeer!\",\"content\":\"Wether you joined us this year or prior to 2022, we want to thank you for being part of this adventure.\"}]}",
    "status": "DRAFT"
}

Only target custodial wallets & active wallets

{
    "campaignName": "New Arianeer",
    "status": "DRAFT",
    "content": "{\"$schema\":\"https://cert.arianee.org/version1/ArianeeMessage-i18n.json\",\"language\":\"en-US\",\"title\":\"Hello Arianeer!\",\"content\":\"Wether you joined us this year or prior to 2022, we want to thank you for being part of this adventure.\"}",
    "uniqueOwner": true,
    "tags": [],
    "tagRule": "all",
    "isWalletActiveSinceNumberOfDays": 30,
    "custodialWallet": "yes",
    "countries": [],
    "_id": "6525520ea1e2be28ae2735ff",
    "createdAt": "2023-10-10T13:30:54.689Z",
    "updatedAt": "2023-10-10T13:30:54.689Z",
    "__v": 0,
    "id": "6525520ea1e2be28ae2735ff"
}

Target specific countries & active wallets

πŸ’‘

To fetch the list of countries, refer to the Segmentation documentation.

{
    "campaignName": "New Arianeer",
    "status": "DRAFT",
    "content": "{\"$schema\":\"https://cert.arianee.org/version1/ArianeeMessage-i18n.json\",\"language\":\"en-US\",\"title\":\"Hello Arianeer!\",\"content\":\"Wether you joined us this year or prior to 2022, we want to thank you for being part of this adventure.\"}",
    "uniqueOwner": true,
    "tags": [],
    "tagRule": "all",
    "isWalletActiveSinceNumberOfDays": 30,
    "custodialWallet": "yes",
    "countries": [
        "France",
        "Spain"
    ],
    "_id": "6525530ca1e2be28ae2736eb",
    "createdAt": "2023-10-10T13:35:08.125Z",
    "updatedAt": "2023-10-10T13:35:08.125Z",
    "__v": 0,
    "id": "6525530ca1e2be28ae2736eb"
}

πŸš€

  • All filter types (tags or tokenId, isWalletActiveSinceNumberOfDays, custodialWallet, countries) can be combined to refine your target audience.
  • If you wish to know how many recipients are involved in your campaign, use our dedicated API.
InputMandatoryTypeDescription
campaignNameβœ…StringName of the campaign as a reference in your NFT Management Platform.
tagRuleβœ…StringTag rules that define if your audience must own all mentioned tags or at least one.
or: The owner must have a digital passport with at least one defined tag.
and: The owner must have a digital passport that includes all specified tags.
all: All digital passports can be targeted independently of their tags or ID.
tokenIds: The owner must be one defined tokenId listed into the field tokenIds.
⚠️ The tokenIds filed is limited to 100,000 entries.
uniqueOwner❌Booleantrue: One message is sent per wallet even if your customer owns several digital passports.
tagsβœ…StringUse tags to target your audience.
If you do not define tags, set it as an empty [] array and use tokenIds to target your audience.
⚠️ Tags are case-sensitive.
tokenIds❌StringTarget specific digital passport IDs to send the campaign.
If you do not define tokenIds, use tags to target your audience.
Example: 123,345,456...
isWalletActiveSinceNumberOfDays❌NumberA period in days during which activity was observed on the user's wallet.
custodialWallet❌StringCustodial or non-custodial wallet.
yes: Send to custodial wallet only.
no: Send to non-custodial wallet only.
all: Both types of wallet.
countries❌StringDefine the target country.
String with values separated by a pipe
Example: France|Spain...
⚠️ Countries are case-sensitive.
content❌ObjectFor more information on the content $schema, see Message Schema.
statutβœ…StringStatut set as DRAFT.

Result: Your once-off message campaign draft has been created and is ready to be sent. Keep the _id, ID of the campaign, to send it the next step.

{
    "tags": [
        "test_api_5k"
    ],
// ID of the once off message campaign
    "_id": "63b7ef72ec133a4fe78e7399",
    "campaignName": "campaign name",
    "tagRule": "or",
    "uniqueOwner": true,
    "tokenIds": {
        "type": "Buffer",
        "data": []
    },
    "content": "{\"$schema\":\"https://cert.arianee.org/version1/ArianeeMessage-i18n.json\",\"language\":\"en-US\",\"i18n\":[{\"language\":\"en-US\",\"title\":\"Hello you !\",\"content\":\"My message content here.\"}]}",
    "status": "DRAFT",
    "createdAt": "2023-01-06T09:52:50.018Z",
    "updatedAt": "2023-01-06T09:52:50.018Z",
    "__v": 0,
    "id": "63b7ef72ec133a4fe78e7399"
}

Step 2: Once your once-off message draft is ready to be sent, use /onceOfMessage/{_id}/createMessage.

Result:

httpCodeDescription
200Your once-off message campaign has been sent to your audience.
In this example, 46 messages, t, has been delivered.
500Your once-off message campaign ID may not exist.
400Your campaign has already been sent.
400No digital passport was found for your campaign ID.
{
    "ok": 1,
    "writeErrors": [],
    "writeConcernErrors": [],
    "insertedIds": [
        {
            "index": 0,
            "_id": "63b7ef72ec133a4fe78e7399"
        }
    ],
    "nInserted": 1,
    "nUpserted": 0,
    "nMatched": 0,
    "nModified": 0,
    "nRemoved": 0,
    "upserted": [],
    "lastOp": {
        "ts": "7185474668390776833",
        "t": 46
    }
}
{
    "name": "API Error",
    "description": "This message 63b7ef1cec133a4fe78e7397 has already been created",
    "code": "nmp.back.onceOff.campaignAlreadyCreated",
    "httpCode": 400
}
{
    "name": "API Error",
    "description": "No NFT found for the message campaign 641436fc334534f2ee7907aa",
    "code": "nmp.back.onceOff.noNFTsFound",
    "httpCode": 400
}
{
    "sentryLink": "https://sentry.io/organizations/arianee/issues/?project=5375493&query=id:ee2e0719a4de4585b120be9e523ef55e&statsPeriod=1h",
    "message": "An unexpected error occured. To help fixing this bug, please send us sentryLink"
}

Update Once Off Message Campaign

Update the content of your once message campaign, e.g. let's say you wish to correct your campaign title and use the /onceOffMessage/{_id}.

πŸ“Œ

The API is authenticated with the user rights required β†’ certCreate

{
    "campaignName": "Hello & welcome to your Arianee NFT",
    "tagRule": "or",
    "uniqueOwner": true,
    "tags": ["dropJan23","dropFeb23"],
    "tokenIds": "",
    "content": "{\"$schema\":\"https://cert.arianee.org/version1/ArianeeMessage-i18n.json\",\"language\":\"en-US\",\"i18n\":[{\"language\":\"en-US\",\"title\":\"Hello you !\",\"content\":\"My message content here.\"}]}",
    "status": "DRAFT"
}

Result: Your campaign has been updated.

httpCodeDescription
200Your once-off message campaign has been updated.
400Your once-off message campaign ID may not exist.
{
    "tags": [
        "tag_test",
        "other_tag"
    ],
    "_id": "63b7ef72ec133a4fe78e7399",
    "campaignName": "Welcome to your Arianee NFT!!",
    "tagRule": "or",
    "content": "{\"$schema\":\"https://cert.arianee.org/version1/ArianeeMessage-i18n.json\",\"language\":\"en-US\",\"i18n\":[{\"language\":\"en-US\",\"title\":\"Hello you !\",\"content\":\"My message content here.\"}]}",
    "createdAt": "2023-02-16T15:39:36.389Z",
    "updatedAt": "2023-03-16T13:29:54.351Z",
    "__v": 0,
    "enable": false,
    "id": "63b7ef72ec133a4fe78e7399"
}
{
    "stringValue": "\"63ee4e3822c4554801f7\"",
    "kind": "ObjectId",
    "value": "63ee4e3822c4554801f7",
    "path": "_id",
    "reason": {}
}