Marketing Consent
How marketing consent is captured and passed for orders via Violet.
This page describes how marketing consent is captured during checkout when using Violet when using Direct Order Submission.
What is Marketing Consent?
Marketing consent is the explicit permission a shopper gives to receive marketing communications, such as promotional email messages, from a merchant. Collecting and honoring this consent is important for privacy compliance and customer trust.
Note: The communication_preferences object is applied at the bag level within each order. This means that different bags (from different merchants) within the same order can have different communication preferences, allowing for merchant-specific consent handling.
Platform Scope
Supported: Shopify only
Overview
The create_order endpoint supports a communication_preferences field, allowing you to specify customer communication preferences at the time of order creation. This enables more granular control over how and when customers receive notifications (such as order confirmation, fulfillment, and marketing emails) from merchants.
This document describes:
The endpoint and request structure (in
snake_case)The new
communication_preferencesobjectPlatform-specific handling for Shopify
Default behavior when preferences are not specified
Example requests and responses
A summary table of preference mapping
Endpoint
POST /api/orders
Creates a new order in Violet.
Accepts a JSON request body with order details, including the new
communication_preferencesfield.
Request Body: Communication Preferences
Field: communication_preferences
communication_preferencesType: Object (optional)
Purpose: Specifies the customer's preferences for receiving communications related to the order.
Structure
{
"order": {
"bags": [
{
"skus": [...],
"communication_preferences": {
"email_preferences": {
"order_confirmation": "OPT_IN" | "NO_OPT_IN",
"order_fulfillment": "OPT_IN" | "NO_OPT_IN",
"marketing": "OPT_IN" | "NO_OPT_IN"
}
}
}
]
}
}
email_preferences: Object containing preferences for different types of email communications.
order_confirmation: Preference for order confirmation emails.
order_fulfillment: Preference for fulfillment/shipping emails.
marketing: Preference for marketing/promotional emails.
Enum values:
OPT_IN: Customer explicitly opts in to receive this type of communication.NO_OPT_IN: Customer does not opt in.
Default Behavior
When the communication_preferences field is not included in the request, the following defaults apply:
Shopify Defaults
marketing:
NO_OPT_INorder_confirmation:
OPT_INorder_fulfillment:
OPT_IN
Example Request
{
"order": {
"app_order_id": "mario-test-1",
"customer": {...},
"bags": [
{
"skus": [...],
"communication_preferences": {
"email_preferences": {
"order_confirmation": "OPT_IN",
"order_fulfillment": "OPT_IN",
"marketing": "NO_OPT_IN"
}
}
}
]
}
}Platform-Specific Handling
Shopify
order_confirmation and order_fulfillment:
If you send
"OPT_IN", Violet will map this to"SINGLE_OPT_IN"in the response and on Shopify (meaning the customer is opted in for this order only).If you send
"NO_OPT_IN", it will remain"NO_OPT_IN".Default when not specified:
OPT_IN(mapped toSINGLE_OPT_IN)
marketing:
"OPT_IN"and"NO_OPT_IN"are mapped directly.Default when not specified:
NO_OPT_IN
API Response
On success, the API will return the created order object, including the resolved communication_preferences as stored in Violet.
Example Success Response:
{
"bags": [
{
"id": 64579,
"communication_preferences": {
"email_preferences": {
"order_confirmation": {
"requested": "OPT_IN",
"result": "SINGLE_OPT_IN"
},
"order_fulfillment": {
"requested": "OPT_IN",
"result": "SINGLE_OPT_IN"
},
"marketing": {
"requested": "NO_OPT_IN",
"result": "NO_OPT_IN"
}
}
}
}
]
}Error Responses:
If the
communication_preferencesobject is malformed or contains invalid values, you will receive a400 Bad Requestwith details.If the platform does not support a given preference, the API will either ignore the unsupported value or map it to the closest supported value, and this will be reflected in the response.
Summary Table
Shopify
marketing
NO_OPT_IN
OPT_IN, NO_OPT_IN
Direct mapping
Shopify
order_confirmation
OPT_IN → SINGLE_OPT_IN
OPT_IN → SINGLE_OPT_IN, NO_OPT_IN
OPT_IN automatically mapped to SINGLE_OPT_IN
Shopify
order_fulfillment
OPT_IN → SINGLE_OPT_IN
OPT_IN → SINGLE_OPT_IN, NO_OPT_IN
OPT_IN automatically mapped to SINGLE_OPT_IN
Last updated
Was this helpful?