API ReferenceStore settings

Update marketing settings

Configure abandoned-cart reminders and optional coupon incentives.

Coupon IDs are scoped to the current store. Reminder delays are expressed in hours. min_total_cents and max_total_cents use integer minor units.

PATCH merges supplied abandoned-cart fields with the existing configuration. To disable abandoned-cart emails while retaining the schedule and thresholds, send only abandoned_cart.enabled as false. PUT replaces the configuration; reminders are required when the replacement enables abandoned-cart emails.

Reminder slots must be contiguous and strictly increasing: a third reminder cannot be configured without a second reminder.

When both coupon_id and send_incentive_on_step are configured, the persisted incentive_mode is existing_coupon; otherwise it is none.

PATCH
/v2/store/settings/marketing

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Header Parameters

X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://sell.app/api/v2/store/settings/marketing" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "abandoned_cart": {      "enabled": false    }  }'
{
  "data": {
    "id": 0,
    "name": "string",
    "slug": "string",
    "visibility": "PUBLIC",
    "timezone": "string",
    "currency": "str",
    "dark_mode": "light",
    "status": {
      "accessible": true,
      "verified": true,
      "locked": true
    },
    "analytics": {
      "ga4_measurement_id": "string",
      "meta_pixel_id": "string",
      "tiktok_pixel_id": "string",
      "ga4_api_secret_configured": true,
      "meta_access_token_configured": true,
      "tiktok_access_token_configured": true
    },
    "marketing": {
      "abandoned_cart": {}
    }
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
PUT
/v2/store/settings/marketing

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Header Parameters

X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PUT "https://sell.app/api/v2/store/settings/marketing" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "abandoned_cart": {      "enabled": false    }  }'
{
  "data": {
    "id": 1,
    "name": "Launch Lab",
    "slug": "launch-lab",
    "visibility": "PUBLIC",
    "timezone": "UTC",
    "currency": "USD",
    "dark_mode": "light",
    "status": {
      "accessible": true,
      "verified": false,
      "locked": false
    },
    "analytics": {
      "ga4_measurement_id": null,
      "meta_pixel_id": null,
      "tiktok_pixel_id": null,
      "ga4_api_secret_configured": false,
      "meta_access_token_configured": false,
      "tiktok_access_token_configured": false
    },
    "marketing": {
      "abandoned_cart": {
        "enabled": true,
        "min_total_cents": null,
        "max_total_cents": null,
        "reminders": [],
        "incentive_mode": "none",
        "coupon_id": null,
        "percent_off": null,
        "send_incentive_on_step": null
      }
    }
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}